python編程,將視頻剪切成圖像,圖像再合成視頻
a. 視頻剪切成圖像:
import cv2 import os vidcap = cv2.VideoCapture('./video/7.mp4') success,image = vidcap.read() count = 0 success = True savedir='./f3/' if not os.path.exists(savedir): os.mkdir(savedir) while success: success,image = vidcap.read() cv2.imwrite(savedir+"7frame%d.jpg" % count, image) # save frame as JPEG file if cv2.waitKey(10) == 27: break count += 1 num=len(os.listdir(savedir))-1 os.remove(savedir+"7frame%d.jpg" % num)
注:
1、將 './video/7.mp4' 換成你的視頻路徑加名稱
2、將 './f3/' 換成你的圖像存儲路徑
3、"7frame%d.jpg" 表示每一幀的圖像名稱。第一幀圖像,這里命名為 "7frame1.jpg" ,你也可以換成自己喜歡的命名
4、下面這一句,注釋掉還是留着,取決與你的最后一張圖像是否可視,在我的工作中,最后一幀的圖像打不開,直接采用下面這句把最后一張圖像給刪除了
num=len(os.listdir(savedir))-1 os.remove(savedir+"7frame%d.jpg" % num)
b. 圖像合成視頻:
#!/usr/bin/env python # -*-coding:utf-8-*- import cv2 import os fsp = 20 fourcc = cv2.VideoWriter_fourcc(*'avc1') video_path = './hecheng.mp4' video_out = cv2.VideoWriter(video_path, fourcc, fsp, (1280,720)) img_path = "./f3/" for i in range(0,1200): if os.path.exists(img_path+"7frame"+str(i)+'.jpg'): frame = cv2.imread(img_path+"7frame"+str(i)+'.jpg') video_out.write(frame) video_out.release()
注:
1、fsp表示幀率,即一秒鍾播放多少張圖像。
播放快點(類似快進的效果),fsp設置大點。
播放慢點(類似慢動作的效果),fsp設置小點。
2、將'./hecheng.mp4'換成你想要的命名。
3、(1280,720)表示每一幀圖像的大小。具體如圖所示:
4、img_path = "./f3/" 是圖像的存儲路徑。即你將"./f3/"路徑下的圖像合成視頻
5、(0,1200)中,1200是一個數,需要大於等於"./f3/"路徑下圖像的數目。0固定不變。
6、"7frame"+str(i)+'.jpg'表示圖像名稱。和切圖時候的圖像命名一致。