它如何计算opencv中黑色像素轮廓的坚固性?

2024-10-03 11:16:39 发布

您现在位置:Python中文网/ 问答频道 /正文

其计算方法为面积/凸壳面积之比:

#calculating area from contour
area = cv2.contourArea(unicocnt)

#calculating hull and hull area
hull = cv2.convexHull(unicocnt) 
hull_area = cv2.contourArea(hull)

#solidity
solidity = float(area)/hull_area

计算圆形图像的所有值都接近1,所以我假设当我计算轮廓的面积时,我不考虑内部是否为白色像素(轮廓为黑色)时,计算圆内的面积

图像示例:https://docs.google.com/file/d/0ByS6Z5WRz-h2b0JITFB4aHR0OWc/edit?usp=sharing

代码:

^{pr2}$

更新

我是这样做的:

ColoredArea = 0
for i in range(0,len(imgbnbin)):
    a = imgbnbin[i]
    for j in range (0, len(a)):
        if (cv2.pointPolygonTest(hull, unicocnt) >= 0):        
            if (getPixel(x,y) == black):
                ColoredArea = ColoredArea +1; 

出现此错误:

if (cv2.pointPolygonTest(hull, unicocnt) >= 0):
TypeError: Required argument 'measureDist' (pos 3) not found

Tags: in图像forifrangeareacv2轮廓