Interpretation des cv2 findContours Arrays

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
Erhy
User
Beiträge: 64
Registriert: Mittwoch 2. Januar 2019, 21:09

Hallo!

Bin zufrieden mit der Funktion findContours()
und möchte das Ergebnis direkt weiterverarbeiten.

In allen gefundenen Beispielen wird die Funktion drawContours() empfohlen
mit der nachfolgendem Pixel-Selektion mit np.where .

Da ich jede gefundenene Kontur separat weiterbearbeiten möchte,
erscheint mir das np.where im großen Image zu aufwendig.

Kennt ihr eine Möglichkeit, die in der Kontur betroffenen Pixel-Koordinaten
direkt aus dem Array zu ermitteln, welches findContours() zurückliefert?

Mich in den Code von cvDrawContours ist für mich eine Doktorarbeit.
( https://github.com/opencv/opencv/blob/m ... rawing.cpp )

Danke für Eure Tipps
Erhy
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

DIeses Snippet per Google gefunden:

Code: Alles auswählen

contours, hierarchy = cv2.findContours(.....)
for contour in contours:
    x, y, width, height = cv2.boundingRect(contour)
Damit sollte doch wohl alles klar sein.
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
__deets__
User
Beiträge: 14528
Registriert: Mittwoch 14. Oktober 2015, 14:29

Laut https://docs.opencv.org/3.4/d3/dc0/grou ... 8403e1689a gibt es drei Rückgabewerte, von denen der mittlerer die Konturen darstellt. Als Liste von Listen von Punkten, eine wie ich finde sehr naheliegende Anordnung.
Antworten