opencv - 多帧图片串联成视频

fourcc = cv2.VideoWriter_fourcc(*'mp4v')
fourcc = cv2.VideoWriter_fourcc(*'X264')
fourcc的类型介绍:
http://www.fourcc.org/codecs.php

当采用H264的时候, 有时候生成视频会找不到编码器
Could not find encoder for codec id 27: Encoder not found
首先查看自己电脑是否装了: opencv-pythonopencv-contrib-python
pip install opencv-python
pip install opencv-contrib-python
如果2个都装了, 那么卸载重装试试。我是这样解决的, 我也不知道原因。。。但这并不是一个有效的解决办法。

我发现很多人都有这个问题, 想直接用opencv保存成h264的视频, 都会出现各种的问题, 保存成mpeg编码格式的, 就没有问题。 其实, opencv在生成h264编码的视频时, 调用的是ffmpeg, 所以我们不如直接尝试用ffmpeg串联图片合成视频。

当然, 我们还可以生成mpeg编码的视频, 然后再使用ffmpeg转成h264的, 这也是个不错的选择。
ffmpeg -i old_video.mp4 new_output.mp4

import cv2
# 输出路径
videoPath = './output_video.mp4'
# 表示视频流格式
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
# 25表示输出视频每秒25帧, (512,288)表示输出的视频的尺寸
videoWriter = cv2.VideoWriter(videoPathTmp, fourcc, 25, (512, 288))
for i in range(1000):
    framePath = 'videoFrame' + '/' + str(i) + '.png'
    frame = cv2.imread(framePath)
    frame = cv2.resize(frame, (512,288))
    videoWriter.write(frame)

你可能感兴趣的:(#,OpenCV)