Python cv2 攝像頭獲取與視頻保存

一、 使用攝像頭捕獲視頻并顯示

import cv2

cap = cv2.VideoCapture(0)
while(1):
    # get a frame
    ret, frame = cap.read()
    # show a frame
    cv2.imshow("capture", frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows() 
  • opencv自帶的VideoCapture()函數(shù)定義攝像頭對象,其參數(shù)0表示第一個攝像頭,有多個攝像頭的情況下參數(shù)換1、2、3……試試
  • 在while循環(huán)中,利用攝像頭對象的read()函數(shù)讀取視頻的某幀,并顯示,然后等待1個單位時間,如果期間檢測到了鍵盤輸入q,則退出,即關閉窗口。
  • 調用release()釋放攝像頭,調用destroyAllWindows()關閉所有圖像窗口。

二、視頻保存

視頻保存可以用cv2.VideoWriter這個函數(shù),需要參數(shù)有視頻名, 格式, 碼率(fps), 幀的尺寸等參數(shù)
可以這么調用:

fourcc = cv2.VideoWriter_fourcc(*'XVID')
fps = cap.get(cv2.CAP_PROP_FPS)
size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), \
        int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))

out = cv2.VideoWriter('camera_test.avi', fourcc, fps, size)
...
# 寫入一幀
out.write(frame)

網(wǎng)上有人說fourcc參數(shù)填-1,我試了,發(fā)現(xiàn)并沒有用
fps那個參數(shù)之在讀取視頻再保存的時候用,保存攝像頭拍攝到的視頻就要填要保存視頻的幀數(shù)

三、完整代碼

import cv2

cap = cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
# fps = cap.get(cv2.CAP_PROP_FPS)
size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
out = cv2.VideoWriter('camera_test.avi', fourcc,10.0, size)
while True:
    ret, frame = cap.read()
    # 橫向翻轉
    frame = cv2.flip(frame, 1)
    out.write(frame)
    # 在圖像上顯示 Press Q to save and quit
    cv2.putText(frame,
                "Press Q to save and quit",
                (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.8,
                (0, 255, 0), 2)
    cv2.imshow('frame', frame)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
out.release()
cv2.destroyAllWindows()

參考:
https://blog.csdn.net/huanglu_thu13/article/details/52337013
https://blog.csdn.net/qq_38003892/article/details/79304139
https://blog.csdn.net/fanzy1234/article/details/78582204

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容