1. 程式人生 > >用python opencv 呼叫攝像頭之if cv2.waitKey(1) & 0xFF == ord('q')分析

用python opencv 呼叫攝像頭之if cv2.waitKey(1) & 0xFF == ord('q')分析

while(1)迴圈內不斷採集影象幀並顯示,並進行按鍵 ‘q’ 的檢測,語句段如下:

while(True):
    ret,frame = cap.read()
    gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
    cv2.imshow('frame',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

waitKey(1) 中的數字代表等待按鍵輸入之前的無效時間,單位為毫秒,在這個時間段內按鍵 ‘q’ 不會被記錄,在這之後按鍵才會被記錄,並在下一次進入if語段時起作用。也即經過無效時間以後,檢測在上一次顯示影象的時間段內按鍵 ‘q’ 有沒有被按下,若無則跳出if語句段,捕獲並顯示下一幀影象。

若此引數置零,則代表在捕獲並顯示了一幀影象之後,程式將停留在if語句段中一直等待 ‘q’ 被鍵入。

cv2.waitKey(1) 與 0xFF(1111 1111)相與是因為cv2.waitKey(1) 的返回值不止8位,但是隻有後8位實際有效,為避免產干擾,通過 ‘與’ 操作將其餘位置0。