如何在Python OpenCV中删除轮廓内部的轮廓?

2024-04-03

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(使用前将#替换为@)

如何在Python OpenCV中删除轮廓内部的轮廓? 的相关文章

随机推荐