2

我正在尝试绘制最大物体的轮廓。

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

所有轮廓对象

为了找到最大的对象,我使用了这段代码:

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)  

结果是下一个: 最大物体的轮廓

为什么轮廓没有连接?

提前致谢。

4

1 回答 1

3

在您的代码中看到,您通过-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 文档页面中获得有关此主题的更多信息

于 2014-12-25T20:46:23.670 回答