2016-04-07 18 views
0

Ich bin ein Anfänger Anfänger in der Programmierung, pordon mich, wenn diese Frage zu trivial ist. Lassen Sie sagen, ich habe diesen Code:Python und OpenCV - Wie kann ich diesen bitweisen Operator verstehen?

camera = cv2.VideoCapture('path_to_video_file') 
while True: 
    #reading frames of video 
    ret, frame = camera.read() 
    cv2.imshow("Video", frame) 
    if cv2.waitKey(1) & 0xFF == ord('q'): 
     break 

Also, von meinem Verständnis am Beispiel, wenn der Rahmen (in dem „Video“ Fenster) angezeigt wird, wenn zugleich die q Taste gedrückt wird, die Schleife würde brechen. Aber ich verstehe nicht wirklich, wie die if cv2.waitKey(1) & 0xFF == ord('q') Linie funktioniert.

Ich weiß, das ist ein bitweises Verfahren, in dem Ausgang 1 nur dann, wenn beide der beiden Eingänge auch 1 ist. Aber das ist alles daran. Also, ich möchte wirklich wissen, was genau passiert.

Und auch, was ist eigentlich die 0xFF == ord('q') bedeutet?

+0

Diverse OS haben unterschiedliche Rückgabewerte für "waitKey", aber die 2 LSB werden gleich sein. – Miki

Antwort

1

Python Operator Vorrang gibt uns:

(cv2.waitKey(1) & 0xFF) == ord('q') 

In binär, ist dies:

(cv2.waitKey(1) & 0b11111111) == ord('q') 

Also, was das bedeutet ist, die niedrigen 8 Bits des Ergebnisses cv2.waitKey und Test zu wählen, wenn das ist gleich zu ord('q'), das ist der ASCII-Wert für 'q'.

Verwandte Themen