2009-06-09 20 views
1

Ich benutze die Python OpenCV Bindings, um die Konturen in einem Bild zu finden. Ich bin auf der Suche nach der Möglichkeit, diese Sequenz zu sortieren.Opencv Sortierfolgen in Python

Es scheint, dass die üblichen Python-Arten für die Sortierung der Liste hier nicht gelten, da die Struktur der verknüpften Liste von OpenCV generiert wird.

Kennen Sie eine gute Möglichkeit, die Konturen nach Größe (Area/BoundingRectangle) in Python zu sortieren? Ist es möglich, einen Beispielcode zu geben?

Antwort

2

Sie müssen in der Lage sein, eine ganze Sequenz zu betrachten, um sie (leicht) zu sortieren. Also sollten Sie es kopieren, um es zu sortieren.

Ich würde so etwas wie

contourList = list(<your linked list>) 
    def sizeKey(countour): 
     <get size from contour> 
    contourList.sort(key = sizeKey) 

tun Wenn alles nicht bereits im Speicher gespeichert werden, können Sie auch bei external sorting Algorithmen suchen.

+0

Es scheint, dass die Liste (meine Liste) funktioniert nicht. Ich nehme an, Python weiß nicht, um die eingewickelte Seq-Struktur von openCV zu behandeln. Aber ich werde die Sequenz in eine Python-Liste konvertieren – Janusz

+0

Sorry meine Schuld :) Es funktioniert. Wenn Sie contores.hrange nehmen, erhalten Sie eine Python-Version der Liste. – Janusz