-1
私は、形を検出する必要があるプログラムで作業しています - 円形と四角形と小文字 -openCV:findContoursを使用して適切に形を検出できません
私はcv2.findCountours、次にcv2.approxPolyDPを使って各形状を検出しています。
は、これは私のコードです:
import numpy as np
import cv2
img = cv2.imread('1.jpg')
gray = cv2.imread('1.jpg',0)
ret,thresh = cv2.threshold(gray,127,255,1)
contours,h = cv2.findContours(thresh,cv2.RETR_CCOMP,cv2.CHAIN_APPROX_NONE)
for cnt in contours:
approx = cv2.approxPolyDP(cnt, 0.03 * cv2.arcLength(cnt, True), True)
print len(approx)
if len(approx)==3:
print "triangle"
cv2.drawContours(img,[cnt],0,(122,212,78),-1)
elif len(approx)==4:
print "square"
cv2.drawContours(img,[cnt],0,(94,234,255),-1)
elif len(approx) == 8:
k = cv2.isContourConvex(approx)
if k:
cv2.drawContours(img, [cnt], 0, (220, 152, 91), -1)
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
それは私が言及した形状を検出しないが、それは同様に、円/三角/四角でない形状を検出し、彼らがいたとしてそれらを提示します。
これは私が使用した画像は、次のとおりです。1
出力:2
任意の提案をどのようにこの問題を解決するには? どの試験を追加できますか?
ありがとうございました!