Seite 1 von 1

Liste von Listen zu Liste von Tupeln

Verfasst: Donnerstag 22. April 2021, 13:15
von G-Rizzle
Hi,

ich möchte die Konturen eines farbigen Gegenstandes markieren. Dazu übertrage ich ein Webcambild in das pygame Fenster. Die Erkennung mache ich mich cv2 über

Code: Alles auswählen

self.contours, self.hierarchy = cv2.findContours(self.mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)


und dort funktioniert es bereits. Die Koordinaten der Konturen liegen als Liste von Listen vor, also

[[[x1 y1]]

[[x2 y2]]

[[x3 y3]]

.
.
.


Zur farbigen Umrandung des Gegenstandes möchte ich die einzelnen Punkte nun verbinden.
dazu nutze ich die funktion pygame.draw.lines. diese fordert jedoch eine Liste von Tupeln, also [(x1, y1), (x2, y2) ] etc. ich könnte die ursprüngliche liste von listen eben in einer for-schleife "umformatieren", jedoch entsteht dadurch eine merkbare verzögerung (weil in jedem frame diese liste erstmal durchlaufen und umformatiert wird). gibt es eine effizientere möglichkeit das ganze ins gewünschte format zu bringen?


Besten Dank!

Re: Liste von Listen zu Liste von Tupeln

Verfasst: Donnerstag 22. April 2021, 13:39
von ThomasL

Re: Liste von Listen zu Liste von Tupeln

Verfasst: Donnerstag 22. April 2021, 14:05
von G-Rizzle
hm naja, das ist ja seliges problem, nämlich dass ein anderes format gefordert wird

Re: Liste von Listen zu Liste von Tupeln

Verfasst: Donnerstag 22. April 2021, 14:16
von __deets__
opencv hat eine drawContours Funktion genau zu diesem Zweck. Warum nimmst du die nicht?

Re: Liste von Listen zu Liste von Tupeln

Verfasst: Donnerstag 22. April 2021, 14:34
von G-Rizzle
ich programmiere eine tello drohne und nutze als frontend pygame. cv bietet dafür nicht die optionen die ich haben möchte

Re: Liste von Listen zu Liste von Tupeln

Verfasst: Donnerstag 22. April 2021, 14:47
von __deets__
Dann wirst du mit der Verzögerung durch die Transformation leben müssen. OpenCV kann das besser, weil es in C++ und mit dem vorliegenden Format arbeitet.

Re: Liste von Listen zu Liste von Tupeln

Verfasst: Donnerstag 22. April 2021, 15:27
von G-Rizzle
okay danke.

dann muss ich das wohl hinnehmen. gibt es eine besonders elegante lösung eine liste der form [[x1 y1] [x2 y2]] auf das format [(x1, y1), (x2, y2)] zu bringen?

Re: Liste von Listen zu Liste von Tupeln

Verfasst: Donnerstag 22. April 2021, 15:35
von __deets__
Ich würde es mit einer List comprehension machen.