2016-05-27 303 views
5

OpenCV的在Python提供以下代码:如何在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中删除它们?

回答

5

为此,您应该看看this tutorial关于如何使用方法findContours返回的hierarchy对象。

主要的一点是,你应该使用cv2.RETR_TREE而不是cv2.RETR_LIST让你的集群之间的父/子关系:

regions, hierarchy = cv2.findContours(binary_image, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) 

然后你就可以通过,如果hierarchy[0,i,3]检查检查与指数i轮廓是否是内部另一等于-1或不等于-1。如果它与-1不同,则轮廓在另一个内。

+0

谢谢!你救了我。 – Tegos