OpenCV cv2.VideoCapture()


 

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()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM