1. 程式人生 > >三 調用攝像頭或打開視頻文件

三 調用攝像頭或打開視頻文件

ide class bre 之前 apt all () 獲取 tro

調用攝像頭

# -*- 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。

三 調用攝像頭或打開視頻文件