cv2.VideoWriter生成视频无法播放的原因(持续补充)

cv2.VideoWriter的使用方法

cv2.VideoWriter(filename, fourcc, fps, frameSize[, isColor])
  • filename:视频保存路径
  • fourcc:指定编码器
  • fps:视频帧率
  • frameSize:图像大小
  • isColor:黑白画面还是彩色画面

示例

first_frame = cv2.imdecode(np.fromfile(img_names[0],dtype=np.uint8),-1)
vid_writer = cv2.VideoWriter(filename=rf'{label_dir}\{index}.mp4', fourcc=cv2.VideoWriter_fourcc(*'XVID'), fps=fps, frameSize=(first_frame.shape[1],first_frame.shape[0]))
for i in os.listdir(img_names):
    img = cv2.imdecode(np.fromfile(img_names[i],dtype=np.uint8),-1)
    img2 = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR) # 如果是灰度图需要加这行
    vid_writer.write(img2)

img_names是要用来生成视频的图像路径列表。

易出错的地方

  1. 如果图像路径存在中文,使用cv2.imdecode(np.fromfile(img_names[0],dtype=np.uint8),-1)来读入图片,而不能是使用cv2.imread
  2. 如果人为指定 frameSize 参数,一定要保证指定的大小等于读入图像的大小
  3. 如果像示例中一样根据输入的图像大小来指定 frameSize 参数,则需要注意frameSize 不能指定为 first_frame.shape[:2],因为 first_frame.shape 的输出是[高,宽,通道数],而 frameSize=[宽,高],所以需要调换顺序
  4. 如果图像是灰度图,则需要使用img2 = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)先转换为BGR格式(这篇博客
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
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编解码器。 希望以上信息对你有帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值