用python的包cv2 對視頻進行處理時,經常會有以下操作:
使用cv2打開一個視頻,將視頻處理后,把結果保存到本次。
代碼
根據opencv-python給出的demo,代碼如下:
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
//定義視頻編碼器
//這里有必要提一下fourcc
//FourCC全稱Four-Character Codes,代表四字符代碼 (four character code), 它是一個32位的標示符,其實就是typedef unsigned int FOURCC;是一種獨立標示視頻數據流格式的四字符代碼。
//因此cv2.VideoWriter_fourcc()函數的作用是輸入四個字符代碼即可得到對應的視頻編碼器。
fourcc = cv2.VideoWriter_fourcc(*'XVID')//使用XVID編碼器
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480))//出分別是:保存文件名、編碼器、幀率、視頻寬高
while(cap.isOpened()):
ret, frame = cap.read()
if ret==True:
# 保存錄像結果
out.write(frame)
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
# 釋放內存
cap.release()
out.release()
cv2.destroyAllWindows()
存儲后的視頻一般無法打開
系統中不存在對應的編碼器!
解決辦法:
將
fourcc = cv2.VideoWriter_fourcc(*'XVID')//使用XVID編碼器
改為:
fourcc = cv2.VideoWriter_fourcc(*'DIXV')//使用XVID編碼器
采用舊版avi的編碼格式即可解決
