可调视频帧率FPS(frames per second),fps值越小每秒播放的图片数越少,这里设置为25。
注意文件夹路径不能有中文,不然读取不了图片
import os
import cv2
# 设置图片文件夹路径和指定视频文件保存路径及视频文件名
folder_path = "J:/configuration/datesets/VOCdevkit/VOC2007/JPEGImages"
video_path = "./test.mp4"
# 获取图片文件夹中所有图片文件的名称
file_names = [name for name in os.listdir(folder_path) if name.endswith((".jpg", ".png"))]
# 检查是否找到图片文件
if not file_names:
print("未找到图片文件!")
exit()
# 设置视频帧率
fps = 25 # 通常视频帧率设置为25或30
# 设置视频高度和宽度
# 可以选择从第一张图片获取尺寸或者手动指定
first_image_path = os.path.join(folder_path, file_names[0])
first_image = cv2.imread(first_image_path)
if first_image is None:
print("无法读取第一张图片!")
exit()
height, width, layers = first_image.shape
# 创建视频写入对象
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
video_writer = cv2.VideoWriter(video_path, fourcc, fps, (width, height))
# 遍历所有图片文件,并将其写入视频
total_images = len(file_names)
for i, name in enumerate(file_names):
image_path = os.path.join(folder_path, name)
image = cv2.imread(image_path)
# 检查图片是否正确读取
if image is None:
print(f"无法读取图片: {image_path}")
continue
# 如果图片尺寸不一致,可以调整尺寸
# image = cv2.resize(image, (width, height))
# 将图片写入视频
video_writer.write(image)
# 显示进度
print(f"进度: {(i + 1) / total_images * 100:.2f}%")
# 释放资源
video_writer.release()
cv2.destroyAllWindows()
print("视频合成完成!")