三 調用攝像頭或打開視頻文件
調用攝像頭
# -*- coding=GBK -*- import cv2 as cv #打開攝像頭獲取圖片 def video_demo(): capture = cv.VideoCapture(0)#打開攝像頭,0代表的是設備id,如果有多個攝像頭,可以設置其他數值 while True: ret, frame = capture.read() #讀取攝像頭,它能返回兩個參數,第一個參數是bool型的ret,其值為True或False,代表有沒有讀到圖片;第二個參數是frame,是當前截取一幀的圖片 frame = cv.flip(frame, 1)#翻轉 0:上下顛倒 大於0水平顛倒 小於180旋轉 cv.imshow("video", frame) if cv.waitKey(10) & 0xFF == ord(‘q‘): # break video_demo() cv.destroyAllWindows()
函數:VideoCapture(0)
打開攝像頭,0代表的是設備id,如果有多個攝像頭,可以設置其他數值
也可以是視頻文件地址,調用視頻文件,如果要播放要設置幀的循環
函數:read()
讀取攝像頭,它能返回兩個參數,第一個參數是bool型的ret,其值為True或False,代表有沒有讀到圖片;第二個參數是frame,是當前截取一幀的圖片
函數:frame = cv.flip(frame, 1)
表示翻轉
0:上下顛倒
大於0:水平顛倒
小於0:180旋轉
waitKey(1) 中的數字代表等待按鍵輸入之前的無效時間,單位為毫秒,在這個時間段內按鍵 ‘q’ 不會被記錄,在這之後按鍵才會被記錄,並在下一次進入if語段時起作用。也即經過無效時間以後,檢測在上一次顯示圖像的時間段內按鍵 ‘q’ 有沒有被按下,若無則跳出if語句段,捕獲並顯示下一幀圖像。
若此參數置零,則代表在捕獲並顯示了一幀圖像之後,程序將停留在if語句段中一直等待 ‘q’ 被鍵入。
cv2.waitKey(1) 與 0xFF(1111 1111)相與是因為cv2.waitKey(1) 的返回值不止8位,但是只有後8位實際有效,為避免產幹擾,通過 ‘與’ 操作將其余位置0。
waitKey(1) 中的數字代表等待按鍵輸入之前的無效時間,單位為毫秒,在這個時間段內按鍵 ‘q’ 不會被記錄,在這之後按鍵才會被記錄,並在下一次進入if語段時起作用。也即經過無效時間以後,檢測在上一次顯示圖像的時間段內按鍵 ‘q’ 有沒有被按下,若無則跳出if語句段,捕獲並顯示下一幀圖像。
若此參數置零,則代表在捕獲並顯示了一幀圖像之後,程序將停留在if語句段中一直等待 ‘q’ 被鍵入。
cv2.waitKey(1) 與 0xFF(1111 1111)相與是因為cv2.waitKey(1) 的返回值不止8位,但是只有後8位實際有效,為避免產幹擾,通過 ‘與’ 操作將其余位置0。
三 調用攝像頭或打開視頻文件