我用cv2把多张图片转成视频时候,遇见了这个错误,不能生成视频文件,查了很多资料,最终同时找到了两种解决方案。
代码:
# coding=utf-8
import os
import cv2
from PIL import Image
def makevideo(path, fps):
""" 将图片合成视频. path: 视频路径,fps: 帧率 """
fourcc = cv2.VideoWriter_fourcc(*"MJPG")
path1 = 'C:/Users/lenovo/PycharmProjects/Dataset/gameData/test'
im = Image.open('C:/Users/lenovo/PycharmProjects/Dataset/gameData/test/10561.jpg')
print(im.size)
vw = cv2.VideoWriter(path, fourcc, fps, im.size)
for i in os.listdir(path1):
frame = cv2.imread(path1 +'/'+ i)
vw.write(frame)
if __name__ == '__main__':
video_path = 'C:/Users/lenovo/PycharmProjects/Dataset/gameData/test_new1.mp4'
makevideo(video_path, 10) # 图片转视频
报错信息:
OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'
OpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'
解决方法:
1,将fourcc = cv2.VideoWriter_fourcc(*"MJPG")的"MJPG"改成"mp4v"
2,将vw = cv2.VideoWriter(path, fourcc, fps, im.size)的fourcc直接改成 0x00000021
第二种方法虽然会出现OpenCV: FFMPEG: tag 0x00000021/'!???' is not found (format 'mp4 / MP4 (MPEG-4 Part 14)')',但是生成的视频文件是正常的。