我试图找到该图像的轮廓,但是该方法查找轮廓只返回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 所示。我试图仅找到这些圆的外边界。我怎样才能做到这一点?
image 3
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(使用前将#替换为@)