我正在尝试使用cv2.findContours在二进制图像中检测特定类型的形状(三角形,正方形,圆形),并使用不同颜色为每种类型着色。 以下代码适用于大型形状,但它不适用于小型形状 - 大约10 * 10像素。
import numpy as np import cv2img = 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.01*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) > 15: print "circle" cv2.drawContours(img,[cnt],0,(220,152,91),-1)
cv2.imshow('img',img) cv2.waitKey(0)
cv2.destroyAllWindows()
我使用的图片:before
结果:after
如果你能帮我解决这个问题,我将非常感激!