有了前面幾次玩過攝像頭的經驗,這次我們來寫點實用的錄影工具。
import cv2
cap = cv2.VideoCapture(0)
在開始錄影之前,我們要先設定擷取影像的size,這時候就會用到VideoCapture
的set
函式:
# 設定擷取影像的尺寸大小
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
cv2.CAP_PROP_FRAME_WIDTH
參數用來設定影像寬度,cv2.CAP_PROP_FRAME_WIDTH
參數則用來設定影像高度,如上面我設定的是寬度640和高度480,具體數值可以依個人需求更改。
設定完解析度之後,要預先設置好影片的編碼方式和錄影品質,這裡我用的是常見的xvid格式:
# 使用 XVID 編碼
fourcc = cv2.VideoWriter_fourcc(*'XVID')
接著用VideoWriter函式設定各項參數:
# 建立 VideoWriter 物件,輸出影片至 output.avi
# FPS 值為 20.0,解析度為 640x480
out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640, 480))
要注意cap.set的步驟其實可以直接寫進VideoWriter的參數裡,兩種寫法的作用都一樣,這裡展示的是簡寫。
前置動作設定完後,就可以開始寫程式主體了:
while cap.isOpened():
ret, frame = cap.read()
if not ret:
print("結束")
break
# 將擷取的圖片寫入VideoWriter
out.write(frame)
cv2.imshow('frame', frame)
if cv2.waitKey(1) == ord('q'):
break
迴圈跳出之後別忘記執行release,以免佔用記憶體資源。
# 釋放所有資源
cap.release()
out.release()
cv2.destroyAllWindows()
寫完之後嘗試執行看看吧,一個簡易的錄影工具就這樣完成了!