2016-05-27 1 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 о том, как использовать объект 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, ваш контур находится внутри другого.

+0

Спасибо! Вы спасли меня. – Tegos

Смежные вопросы