1惠桃、視頻分幀
最近對視頻人臉進(jìn)行提取landmark绿聘,所以先把視頻進(jìn)行分幀圖片處理
import cv2
def video2frame(video_path,frame_save_path,time_interval):
"""
:param video_path: 視頻存放地址
:param frame_save_path: 生成圖片存放地址
:param time_interval: 幀數(shù)的間隔级解,也就是說隔幾幀去一次
:return:
"""
vidcap = cv2.VideoCapture(video_path)
success, image = vidcap.read() #讀取視頻
count = 0
while success:
success, image = vidcap.read()
count += 1
if count % time_interval == 0:
cv2.imwrite(frame_save_path + '/frame%d.png' % count, image)
print(count)
if __name__=="__main__":
video_path = r'F:\data\test\02-01-06-02-01-01-01.mp4'
save_path = r'F:/data/test/data'
video2frame(video_path, save_path, 1)
2、多張圖片視頻合成
最近做視頻试伙,因?yàn)樯傻亩际菆D片嘁信,所以把圖片合成起來看生成的結(jié)果
import os
import cv2
def generate_video(path,size)
fps = 24 #幀率
#size = (640, 480)
videowriter = cv2.VideoWriter("F:/data/test.mp4",cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'), fps, size)
#path = r'F:/data/predict_landmark/'
for i in os.listdir(path):
img = cv2.imread(path + i)
videowriter.write(img)
videowriter.release()
generate_video('F:/data/predict_landmark/',(640, 480))
ps.文件路徑和圖片名都不要出現(xiàn)中文于样,否則視頻可能合成錯誤。
視頻編碼參考:
CV_FOURCC('P','I','M','1') = MPEG-1 codec
CV_FOURCC('M','J','P','G') = motion-jpeg codec
CV_FOURCC('M', 'P', '4', '2') = MPEG-4.2 codec
CV_FOURCC('D', 'I', 'V', '3') = MPEG-4.3 codec
CV_FOURCC('D', 'I', 'V', 'X') = MPEG-4 codec
CV_FOURCC('U', '2', '6', '3') = H263 codec
CV_FOURCC('I', '2', '6', '3') = H263I codec
CV_FOURCC('F', 'L', 'V', '1') = FLV1 codec
注: 視頻播放有問題的話可以從這里邊選擇不同的編碼方式潘靖。