利用Python将多张图片合成视频

参考:https://blog.csdn.net/m0_46296922/article/details/109902075
算法的核心思想,大家的代码可能千差万别,但是思路都是一样的。
1.利用cv2.imread()读取图片文件
2.利用cv2.VideoWriter()产生一个对象
3.调用这个对象的write方法将所需的图片写进去,这样就生成了一个视频
几个大坑:
1.

size = (432,288)#这边是图片的尺寸,图片的尺寸得是一样的,不一样的话有个博主编了一个resize函数可以去参考一下

大小必须是一样的
2.imread函数无法读取有中文字符的路径,一定得是英文字符
3.videowrite = cv2.VideoWriter(r’F:\test.mp4’,-1,20,size)这边的路径好像也得是英文,我试了含有中文的路径不行

import numpy as np
import cv2
import os

showDir1=r"D:\gxq\code\demo\Competitions\21\19\700006253759"
files=os.listdir(showDir1)
s=[]
for file in files:
    if os.path.join(showDir1,file).endswith('.jpg'):
        s.append(os.path.join(showDir1,file))

size = (1224,1024)#这个是图片的尺寸,一定要和要用的图片size一致
#完成写入对象的创建,第一个参数是合成之后的视频的名称,第二个参数是可以使用的编码器,第三个参数是帧率即每秒钟展示多少张图片,第四个参数是图片大小信息
videowrite = cv2.VideoWriter(r'D:\gxq\code\demo\Competitions\21\19\700006253759\test.mp4',-1,30,size)#20是帧数,size是图片尺寸
img_array=[]
filelen=len(s)
for filename in s:#这个循环是为了读取所有要用的图片文件
    img = cv2.imread(filename)
    if img is None:
        print(filename + " is error!")
        continue
    img_array.append(img)
for i in range(filelen):#把读取的图片文件写进去
    videowrite.write(img_array[i])
videowrite.release()
print('end!')

效果是把当前目录下的所有图片集成成一个mp4文件。

你可能感兴趣的:(python,python,开发语言,后端)