Ich war auf der Suche nach so etwas, aber ich konnte nicht finden, so hier geht es.So verwenden Sie den Rückgabewert einer Funktion als Bedingung while das Tupel in Python zurückgibt
Einige Hintergrund
Ich benutze opencv Frames aus einer Videodatei abgerufen werden. Normalerweise tun es die Menschen in einer Endlosschleife wie:
while (True):
s, img = cv.read()
oder
for i in xrange(10000): #just a big number
s, img = cv.read()
jetzt will ich alle Frames abzurufen und die Schleife beendet, wenn es keine weiteren Frames. Allerdings sind meine Fähigkeiten in Python nicht stark genug, um das zu tun, was ich tun möchte.
Was ich
read
Funktion wissen möchten (oder eine Methode, ich weiß nicht, wie sie in Python genannt) gibt ein Tupel: erste Erfolg der Operation darstellt, und der zweite stellt den Rahmen zurück . Ich möchte die while-Schleife unterbrechen, wenn das erste Element des Tupels falsch ist. Mit einem C-Hintergrund dachte ich, das würde vielleicht funktionieren:
while ((success, img = capture.read())[0]):
#do sth with img
Ich dachte, dies wird die Schleife brechen, wenn der Erfolg falsch ist. Aber es tat es nicht. Dann dachte ich, das wird vielleicht funktionieren:
while ((success, img = capture.read()).success):
#do sth with img
es hat auch nicht funktioniert. Ich will nicht so etwas wie
while(True):
s, i = capture.read()
if (s == False):
break
Wie testen in while
den Zustand kann tun, nicht in einem if
die, wenn sie erfolgreich bricht?
Jeder Grund, warum Sie nicht die letzte Sache machen wollen (welche IMO ist die richtige Weise)? – RedBaron
Ich bin mit @RedBaron auf diesem. Ich denke, dein letzter Auszug ist bei weitem der klarste. – NPE
Ich denke, Bedingung von "while" sollte die Schleifenbedingung sein. –