Python 将大量图像合成视频

fork https://blog.csdn.net/qq_37080185/article/details/123895700 这位作者进行修改。

找了半天ae教程发现太麻烦了,果然python大法好
需要改的是 size src_path sav_path --再有就帧数

import numpy as np
import cv2
import os


# 1.每张图像大小
size = (1920, 1080)
print("每张图片的大小为({},{})".format(size[0], size[1]))
# 2.设置源路径与保存路径
src_path = r'./train'  #文件夹内只允许有图片
sav_path = r'./test.mp4'

# 需要改的是 size  src_path  sav_path --再有就帧数 


# 3.获取图片总的个数
all_files = os.listdir(src_path)
index = len(all_files)
print("图片总数为:" + str(index) + "张")
# 4.设置视频写入器
fourcc = cv2.VideoWriter_fourcc(*'mp4v')  # MP4格式
#完成写入对象的创建,第一个参数是合成之后的视频的名称,第二个参数是可以使用的编码器,第三个参数是帧率即每秒钟展示多少张图片,第四个参数是图片大小信息
videowrite = cv2.VideoWriter(sav_path, fourcc, 5, size)  #5是每秒的帧数,size是图片尺寸
# 5.临时存放图片的数组
img_array = []

# 6.读取所有jpg格式的图片 
for base_path, folder_list, file_list in os.walk(src_path):
        # root 表示当前正在访问的文件夹路径
        # dirs 表示该文件夹下的子目录名list
        # files 表示该文件夹下的文件list
        for img_name in file_list:
            img_path=base_path+'/'+img_name
            img = cv2.imread(img_path)
            if img is None:
                print(img_path + " is error!")
                continue
            img_array.append(img)
        # 内部不遍历
        break
    
# 7.合成视频
for i in range(0, index):
 img_array[i] = cv2.resize(img_array[i],size)
 videowrite.write(img_array[i])
 print('第{}张图片合成成功'.format(i))
 
print('------done!!!-------')

猜你喜欢

转载自blog.csdn.net/TY_GYY/article/details/128398949