iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 10
1

有了前面幾次玩過攝像頭的經驗,這次我們來寫點實用的錄影工具。

import cv2
 
cap = cv2.VideoCapture(0)

在開始錄影之前,我們要先設定擷取影像的size,這時候就會用到VideoCaptureset函式:

# 設定擷取影像的尺寸大小
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()

寫完之後嘗試執行看看吧,一個簡易的錄影工具就這樣完成了!


上一篇
Day9-讀取影片
下一篇
Day11-影像邊緣偵測
系列文
OpenCV 從零開始的影像處理30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言