OpenCV 寫入影片
import cv2 # 匯入函式
video = cv2.VideoCapture('newuser.mp4') # 讀取影片檔攝影鏡頭
width = int(video.get(cv2.CAP_PROP_FRAME_WIDTH)) // 2 # 取得影片寬度
height = int(video.get(cv2.CAP_PROP_FRAME_HEIGHT)) // 2 # 取得影片高度
fourcc = cv2.VideoWriter_fourcc(*'MJPG') # 設定輸出影片的格式為 MJPG
out = cv2.VideoWriter('output.mov', fourcc, video.get(cv2.CAP_PROP_FPS), (width, height), isColor=False) # 產生空的影片,並將FPS設定與原有影片相同
if not video.isOpened(): # 判斷影片是否正常開啟
print("Cannot open camera")
exit()
while True:
ret, frame = video.read() # 讀取影片的每一個影格
if not ret:
print("Cannot receive frame") # 如果讀取錯誤,印出訊息
break
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 將影片轉換成灰階
frame = cv2.resize(gray, (width, height), interpolation=cv2.INTER_NEAREST) # 調整影片大小
out.write(frame)
cv2.imshow('OpenCVTest', frame) # 如果讀取成功,顯示該影格的畫面
if cv2.waitKey(1) == ord('q'): # 每一毫秒更新一次,直到按下 q 結束
break
video.release() # 所有作業都完成後,釋放資源
out.release() # 釋放資源
cv2.destroyAllWindows() # 結束所有視窗
VideoWriter() 儲存影片
※語法參照
VideoWriter() 可以建立一個空的「影片檔」,將擷取到的影像圖片經過處理後,寫入空的影片檔案,完成後就會儲存成新為新的影片。
cv2.get() 取得的影片屬性
※語法參照
使用 '影片變數'.get() 方法可以取得影片的屬性,利用影片屬性可以減少在儲存影片的錯誤