1、vc = cv2.VideoCapture(0)
VideoCapture()中參數是0,表示打開筆記本的內置攝像頭,參數是視頻文件路徑則打開視頻,如vc = cv2.VideoCapture("../testi.mp4")
2、ret,frame = vc.read()
vc.read()按幀讀取視頻,ret,frame是獲cap.read()方法的兩個返回值。其中ret是布爾值,如果讀取幀是正確的則返回True,如果文件讀取到結尾,它的返回值就為False。frame就是每一幀的圖像,是個三維矩陣。
3、cv2.waitKey(1),waitKey()方法本身表示等待鍵盤輸入,
參數是1,表示延時1ms切換到下一幀圖像,對於視頻而言;
參數為0,如cv2.waitKey(0)只顯示當前幀圖像,相當於視頻暫停,;
參數過大如cv2.waitKey(1000),會因為延時過久而卡頓感覺到卡頓。
c得到的是鍵盤輸入的ASCII碼,esc鍵對應的ASCII碼是27,即當按esc鍵是if條件句成立
4、調用release()釋放攝像頭,調用destroyAllWindows()關閉所有圖像窗口。
import numpy as np import cv2 as cv # 創建VideoCapture,傳入0即打開系統默認攝像頭 vc = cv.VideoCapture(0) while(True): # 讀取一幀,read()方法是其他兩個類方法的結合,具體文檔 # ret為bool類型,指示是否成功讀取這一幀 ret, frame = vc.read() # 就是個處理一幀的例子,這里轉為灰度圖 gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY) # 不斷顯示一幀,就成視頻了 # 這里沒有提前創建窗口,所以默認創建的窗口不可調整大小 # 可提前使用cv.WINDOW_NORMAL標簽創建個窗口 cv.imshow('frame',gray) # 若沒有按下q鍵,則每1毫秒顯示一幀 if cv.waitKey(1) & 0xFF == ord('q'): break # 所有操作結束后不要忘記釋放 vc.release() cv.destroyAllWindows()
操作視頻文件
import numpy as np import cv2 as cv vc = cv.VideoCapture('test.mp4') while(vc.isOpened()): ret, frame = cap.read() gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY) cv.imshow('frame',gray) if cv.waitKey(1) & 0xFF == ord('q'): break vc.release() cv.destroyAllWindows()