2009-06-09 10 views
1

J'utilise les liaisons Python OpenCV pour trouver les contours dans une image. Je suis à la recherche de la possibilité de trier cette séquence.Séquences de tri Opencv en python

Il semble que les méthodes python habituelles pour le tri par liste ne s'appliquent pas ici en raison de la structure de liste chaînée générée à partir d'OpenCV.

Savez-vous un bon moyen de trier les Contours par taille (Area/BoundingRectangle) en python? Est-il possible de donner un exemple de code?

Répondre

2

Vous devez être capable de regarder une séquence entière afin de la trier (facilement). Ainsi vous devriez le copier pour le trier.

je ferais quelque chose comme

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

Si tout n'est pas stocké dans la mémoire déjà, vous pouvez également regarder external sorting algorithmes.

+0

Il semble que la liste (ma liste) ne fonctionne pas. Je suppose que python ne sait pas gérer la structure seq enveloppée depuis openCV. Mais je vais convertir la séquence en une liste python – Janusz

+0

Désolé ma faute :) Cela fonctionne. Si vous prenez contours.hrange vous obtenez une version python de la liste. – Janusz