Python cv2视频帧合成
需要调用cv2这个库的函数,直接上代码:
import cv2
import os
size = (1280,1024)#这个是图片的尺寸,一定要和要用的图片size一致
#完成写入对象的创建,第一个参数是合成之后的视频的存储路径,第二个参数为四字符代码,第三个参数为帧数,第四个为图像尺寸
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
videowrite = cv2.VideoWriter(r'/data/facias/mmrotate-main/mmdeploy/s2anet2onnx2/vedio/ir.mp4',fourcc,10,size)
img_list = os.listdir("data/test_split/ir_images")#读取所有的文件名,返回列表
for filename in img_list:#这个循环是为了读取所有要用的图片文件
img = cv2.imread("data/test_split/ir_images/" + filename)#读取图片为array格式,尺寸(1024,1280,3),注意是和上面的size反着来的
if img is None:
print(filename + " is error!")
continue
videowrite.write(img)#将图片写入之前构建好的对象
videowrite.release()
print('end!')
- size要特别注意,这里的size顺序应该是(Width,Height),错了的话生成的视频文件应该是空的;
- fourcc意为四字符代码(Four-Character Codes),该编码由四个字符组成,以下为常用参数:
-
- cv2.VideoWriter_fourcc(*‘mp4v’): 之前是cv2.VideoWriter_fourcc(‘M’, ‘P’, ‘4’, ‘V’),高版本必须要改写成小写才行,生成.mp4文件;
-
- cv2.VideoWriter_fourcc(‘X’,‘2’,‘6’,‘4’): 生成.mp4文件;
-
- cv2.VideoWriter_fourcc(‘I’, ‘4’, ‘2’, ‘0’): YUV编码类型,生成.avi ;
-
- cv2.VideoWriter_fourcc(‘P’, ‘I’, ‘M’, ‘I’): MPEG-1编码类型,生成.avi;
-
- cv2.VideoWriter_fourcc(‘X’, ‘V’, ‘I’, ‘D’):MPEG-4编码类型,生成.avi;
-
- cv2.VideoWriter_fourcc(‘T’, ‘H’, ‘E’, ‘O’): Ogg Vorbis,生成.ogv;
-
- cv2.VideoWriter_fourcc(‘F’, ‘L’, ‘V’, ‘1’): Flash视频,生成.flv;