我试图画出最大物体的轮廓。
首先,我将展示绘制所有轮廓的图像:
要找到我使用此代码的最大对象:
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)
结果是下一个:
为什么轮廓没有连接?
提前致谢。
答案 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
中获得有关此主题的更多信息