Python中的OpenCV提供了以下代码:
regions, hierarchy = cv2.findContours(binary_image, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
for region in regions:
x, y, w, h = cv2.boundingRect(region)
cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 1)
这给出了轮廓内的一些轮廓。如何在Python中删除它们?
为此,你应该看看本教程 http://docs.opencv.org/3.1.0/d9/d8b/tutorial_py_contours_hierarchy.html关于如何使用hierarchy
方法返回的对象findContours
.
要点是你应该使用cv2.RETR_TREE
代替cv2.RETR_LIST
获取集群之间的父/子关系:
regions, hierarchy = cv2.findContours(binary_image, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
然后你可以检查轮廓是否带有索引i
通过检查是否在另一个内部hierarchy[0,i,3]
等于或不等于-1。如果它与 -1 不同,则您的轮廓位于另一个轮廓内。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)