2016-04-07 17 views
0

Programlamada hala yeni başlayan biriyim, bu soru çok önemsiz ise beni koruyun. Bu kodu var diyelim: Aynı anda, q tuşuna basılırsa,Python ve OpenCV - Bu bitsel operatörü nasıl anlayabilirim?

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 

Yani yine de bana göre, örneğin en çerçeve gösterilir ("Video" penceresinde), döngü kırılırdı. Ama ben if cv2.waitKey(1) & 0xFF == ord('q') hattının nasıl çalıştığını anlamıyorum.

Bildiğim kadarıyla bu, her iki girişin de 1 olduğu durumda 1'in çıktığı bir AND bitlik işlemdir. Ama hepsi bu kadar. Yani, tam olarak ne olduğunu bilmek istiyorum.

Ayrıca, aslında 0xFF == ord('q') nedir?

+0

Farklı işletim sistemi "waitKey" için farklı değerlere sahip olacak, ancak 2 LSB aynı olacaktır. – Miki

cevap

1

Python operatör önceliği bize veriyor: İkili olarak

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

şudur ki: Yani

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

ne yapar o eşit olmadığını sonucunda cv2.waitKey ve test düşük 8 bit seçmektir , 'q' için ASCII değeridir.