当我绘制更大的轮廓对象时,Python Opencv drawContours失败

时间:2014-12-25 13:33:43

标签: opencv opencv-drawcontour

我试图画出最大物体的轮廓。

首先,我将展示绘制所有轮廓的图像:

All contours objects

要找到我使用此代码的最大对象:

maxsize = 0  
best = 0  
count = 0  
for cnt in contours:  
    if cv2.contourArea(cnt) > maxsize:  
        maxsize = cv2.contourArea(cnt)  
        best = count  
    count += 1  

cv2.drawContours(img_rgb, contours[best], -1, (0,0,255), 2)  

结果是下一个: Contours of biggest object

为什么轮廓没有连接?

提前致谢。

1 个答案:

答案 0 :(得分:2)

当你真正想要只绘制-1时,你可以通过函数的best参数告诉你的代码绘制所有轮廓。因此,您可以简单地要求函数绘制您想要的轮廓,而不是-1(全部)。

您可以修复此问题,替换该行:

cv2.drawContours(img_rgb, contours[best], -1, (0,0,255), 2)  

使用:

cv2.drawContours(img_rgb, contours, best, (0,0,255), 2)

或者你仍然可以使用-1,但是你需要一组点([])作为参数:

cv2.drawContours(img_rgb, [contours[best]], -1, (0,0,255), 2)  

您可以在OpenCV Docs page

中获得有关此主题的更多信息