Python把图片批量合成为视频代码

 可调视频帧率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("视频合成完成!")

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值