2016-05-27 353 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