Werte in Tuple auslesen und Variablen zuweisen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
markjohannes
User
Beiträge: 29
Registriert: Dienstag 24. April 2018, 22:04

Um mit opencv (cv2), Templates in Bildern suchen habe ich folgenden for-Schleife programmiert:

for pt in zip(*loc[::-1]):

Jetzt ist pt eine Tuple und zeigt folgendes an, wenn ich print(pt) ausführe:
(1008, 230)
(1009, 230)
(1010, 230)

Mein ertse Frage ist, ob alle Werte auf der Linken Seite eim Wert für die Tuple ist, denn wenn ich v=np.array(pt)
eingebe und dann print(v[1:), sind die linken Werte verschwunden.

Meine eigentliche Frage ist, wie ich den Wrtz 1010 der Variablen x zuweisen kann und den Wert 230 der Variablen y.

Mit freundlichen Grüßen
Johannes Schaffer
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

@markjohannes: natürlich ist bei `pt[1:]` der linke Wert verschwunden, weil Du nur Werte ab Index 1 ausgibst. Was Du brauchst ist Tuple-Unpacking:

Code: Alles auswählen

for x, y in zip(*loc[::-1]):
    print(x, y)
markjohannes
User
Beiträge: 29
Registriert: Dienstag 24. April 2018, 22:04

Okay vielen Dank für die schnelle Antwort.
Wenn ich das durchführe, habe ich für x und y jeweils drei Werte. Wie kann ich für x nur den letzen behalten?

LG Johannes
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

Du hast eine Schleife. Also jeweils nur einen Wert. Wenn Du nur den letzten Wert willst, dann brauchst Du keine Schleife, sondern mußt nur den 0. Index wählen.
markjohannes
User
Beiträge: 29
Registriert: Dienstag 24. April 2018, 22:04

Oh okay. Und wie mache ich das? Ich kann mir zip(*loc[::-1]) nicht ausgeben lassen.

LG Johannes
markjohannes
User
Beiträge: 29
Registriert: Dienstag 24. April 2018, 22:04

Also ich weiß, wie man das mit Arrays macht, aber dies ist kein Array.
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

@markjohannes: damit Dein Code zusammen mit dem Beispieloutput Sinn ergibt, muß loc eine Sequenz von Sequenzen sein. In der ersten Sequenz stehen die y-Werte, in der zweiten die x-Werte. An das letzte x gelangst Du dann mit

Code: Alles auswählen

x = loc[1][-1]
(ungetestet)
Antworten