2016-05-27 22 views
5

OpenCV in Python fornisce il seguente codice:Come rimuovere un contorno all'interno del contorno in 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) 

Questo dà alcuni contorni all'interno di contorno. Come rimuoverli in Python?

risposta

5

Per questo, è necessario dare un'occhiata a this tutorial su come utilizzare l'oggetto hierarchy restituito dal metodo findContours.

Il punto principale è che si dovrebbe usare cv2.RETR_TREE invece di cv2.RETR_LIST per ottenere relazioni padre/figlio tra i cluster:

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

Poi si può verificare se un contorno con indice i è all'interno di un altro controllando se hierarchy[0,i,3] uguale a -1 o no. Se è diverso da -1, il tuo contorno si trova all'interno di un altro.

+0

Grazie! Mi hai salvato. – Tegos