2016-05-27 10 views
5

OpenCV in Python bietet den folgenden Code:Wie entferne ich eine Kontur innerhalb der Kontur 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) 

Dies gibt einige Konturen innerhalb Kontur. Wie man sie in Python entfernt?

Antwort

5

Dafür, sollten Sie einen Blick auf this tutorial auf wie das hierarchy Objekt von der Methode zurückgegeben findContours.

Der wichtigste Punkt ist, dass Sie cv2.RETR_TREE statt cv2.RETR_LIST zu Eltern/Kind-Beziehungen zwischen den Clustern zu erhalten verwenden sollen:

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

Dann können Sie prüfen, ob eine Kontur mit dem Index innerhalb eines anderen i ist durch Prüfen, ob hierarchy[0,i,3] gleich -1 oder nicht Wenn es sich von -1 unterscheidet, ist Ihre Kontur in einem anderen.

+0

Vielen Dank! Du hast mich gerettet. – Tegos