opencv 将多帧图像合成为视频 cv2.VideoWriter()

应用场景

将文件夹下有时间戳或者有序的 *.jpg 图像合成为一个 mp4 格式的视频。
附加:加进度条看合成进度。

代码

import os
import cv2
from tqdm import tqdm     # python 进度条库

image_folder_dir = "/your/folder/path"
fps = 24     # fps: frame per seconde 每秒帧数,数值可根据需要进行调整
size = (640, 360)     # (width, height) 数值可根据需要进行调整
fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v')     # 编码为 mp4v 格式,注意此处字母为小写,大写会报错
video = cv2.VideoWriter("/path/you/want/to/save/your/video/your_video_name.mp4", fourcc, fps, size, isColor=True)

image_list = sorted([name for name in os.listdir(image_folder_dir) if name.endswith('.jpg')])     # 获取文件夹下所有格式为 jpg 图像的图像名,并按时间戳进行排序
for image_name in tqdm(image_list):     # 遍历 image_list 中所有图像并添加进度条
	image_full_path = os.path.join(image_folder_dir, image_name)     # 获取图像的全路经
	image = cv2.imread(image_full_path)     # 读取图像
	video.write(image)     # 将图像写入视频

video.release()
cv2.destroyAllWindows()

补充说明

以上示例合成视频为 mp4 格式,如需合成其它视频格式,可修改 cv2.VideoWriter_fourcc() 参数。请自行查询相关参数。

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
cv2OpenCV库的Python接口,用于图像视频处理。cv2.VideoWriter是OpenCV中用于创建视频文件并写入的类。 使用cv2.VideoWriter可以将一系列图像写入视频文件。下面是cv2.VideoWriter的基本用法: 1. 首先,导入cv2库: ```python import cv2 ``` 2. 创建一个cv2.VideoWriter对象,指定输出视频文件的名称、编解码器、率和分辨率等参数: ```python output_file = 'output.avi' # 输出视频文件名 fourcc = cv2.VideoWriter_fourcc(*'XVID') # 编解码器(这里使用XVID) fps = 30.0 # 率 frame_size = (640, 480) # 分辨率 video_writer = cv2.VideoWriter(output_file, fourcc, fps, frame_size) ``` 3. 循环读取图像,并将每一写入视频文件: ```python while True: ret, frame = capture.read() # 读取图像 if not ret: break video_writer.write(frame) # 写入视频文件 ``` 4. 最后,释放资源并关闭视频文件: ```python video_writer.release() # 释放资源 ``` 这样就可以将一系列图像写入视频文件了。 需要注意的是,编解码器的选择取决于你的系统和安装的OpenCV版本。常见的编解码器有XVID、MJPG等。 另外,还可以通过设置视频文件的扩展名来指定编解码器,例如: ```python output_file = 'output.mp4' # 输出视频文件名,扩展名为mp4 video_writer = cv2.VideoWriter(output_file, cv2.VideoWriter_fourcc(*'mp4v'), fps, frame_size) ``` 这样就使用了mp4v编解码器。 希望以上信息对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值