Opencv未找到所有轮廓

2024-05-07

我试图找到该图像的轮廓,但是该方法查找轮廓只返回1轮廓,轮廓突出显示image 2。我正在努力寻找all外部轮廓就像这些圆圈,里面有数字。我究竟做错了什么?我可以做什么来实现它?

image 1:

image 2:

以下是我的代码的相关部分。

thresh = cv2.threshold(image, 0, 255,
                           cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1]

cnts = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL,
                            cv2.CHAIN_APPROX_SIMPLE)

当我改变时cv2.RETR_EXTERNAL to cv2.RETR_LIST它似乎检测到相同的轮廓两次或类似的东西。图 3 显示了首次检测到圆的边界,然后再次检测到圆的边界,如图 4 所示。我试图仅找到这些圆的外边界。我怎样才能做到这一点?

enter image description here image 3

enter image description here image 4


问题是旗帜cv2.RETR_EXTERNAL您在函数调用中使用的。如中所述OpenCV 文档 https://docs.opencv.org/3.4.0/d9/d8b/tutorial_py_contours_hierarchy.html,这仅返回外部轮廓。

使用旗帜cv2.RETR_LIST您将获得图像中的所有轮廓。由于您尝试检测环,因此该列表将包含这些环的内部和外部轮廓。

要过滤圆的外边界,您可以使用cv2.contourArea()找到两个重叠轮廓中较大的一个。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Opencv未找到所有轮廓 的相关文章

随机推荐