使用CV2将图片合成视频时输出文件过小无有效内容问题求助
问题根因
你得到无效小体积视频的核心原因是 VideoWriter 初始化时指定的帧尺寸 frameSize 和实际读取的图片尺寸不匹配,OpenCV 不会自动适配帧尺寸,尺寸不符时帧数据不会被成功写入,最终仅生成空的视频头文件,也就是你拿到的6KB无效文件。
修复方案
- 读取每张图片后统一缩放到你指定的
(500, 500)尺寸,再写入视频 - 可更换兼容性更强的编码格式,避免部分Windows以外的系统不支持DIVX编码导致写入失败
- 可选:对glob读取的文件名做排序,避免最终视频的帧顺序错乱
修改后完整代码
import cv2 import numpy as np import glob frameSize = (500, 500) # 若需要生成兼容性更强的mp4格式,可替换为下方编码配置 # out = cv2.VideoWriter('output_video.mp4', cv2.VideoWriter_fourcc(*'mp4v'), 2, frameSize) out = cv2.VideoWriter('output_video.avi', cv2.VideoWriter_fourcc(*'DIVX'), 2, frameSize) for filename in glob.glob('thumbnails/*.jpg'): print(filename) img = cv2.imread(filename) # 新增缩放逻辑,统一帧尺寸 img = cv2.resize(img, frameSize) out.write(img) out.release()
内容的提问来源于stack exchange,提问作者lorenz saladin
相关产品推荐
相关产品推荐

