cv2 VideoWriter returns 损坏的视频
cv2 VideoWriter returns corrupted video
有许多相关问题,但是 none 的解决方案似乎有效。我可以在 SO 上找到的主要解决方案与输入大小有关,我相信我已经纠正了这一点。然而,我有以下问题:
我有许多图像要用作框架:
frame_0001.png
frame_0002.png
frame_.....etc
我将它们全部加载到:
frames_location = glob.glob(r'stimuli\ambush_1\frame_*.png')
frames = []
for frame in frames_location:
frames.append(cv2.imread(frame))
接下来,我使用以下函数将此帧列表转换为视频:
def frames_to_video(frames, name='test.mp4'):
w,h,_ = frames[0].shape # extract size information
fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v')
writer = cv2.VideoWriter(name, fourcc, 20, (w,h) )
for frame in frames:
writer.write(frame)
writer.release()
video = frames_to_video(frames)
运行 此代码按预期创建了一个 test.mp4
视频,大小为 1kb。我加载的图像每张大约 300kb,所以这已经是出现问题的第一个信号。尝试播放视频 returns 出现 0xc10100be
错误。
我哪里错了?我的代码有什么问题?
我是 运行 Python 3.9.6,安装了 OpenCv 4.5.3。
原来我少了一个dll文件。
更具体地说,我使用 pip 安装了 opencv。但是,我没有选择contrib版本。
因此,修复它很简单
py -m pip uninstall opencv-python
py -m pip install opencv-contrib-python
有许多相关问题,但是 none 的解决方案似乎有效。我可以在 SO 上找到的主要解决方案与输入大小有关,我相信我已经纠正了这一点。然而,我有以下问题:
我有许多图像要用作框架:
frame_0001.png
frame_0002.png
frame_.....etc
我将它们全部加载到:
frames_location = glob.glob(r'stimuli\ambush_1\frame_*.png')
frames = []
for frame in frames_location:
frames.append(cv2.imread(frame))
接下来,我使用以下函数将此帧列表转换为视频:
def frames_to_video(frames, name='test.mp4'):
w,h,_ = frames[0].shape # extract size information
fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v')
writer = cv2.VideoWriter(name, fourcc, 20, (w,h) )
for frame in frames:
writer.write(frame)
writer.release()
video = frames_to_video(frames)
运行 此代码按预期创建了一个 test.mp4
视频,大小为 1kb。我加载的图像每张大约 300kb,所以这已经是出现问题的第一个信号。尝试播放视频 returns 出现 0xc10100be
错误。
我哪里错了?我的代码有什么问题?
我是 运行 Python 3.9.6,安装了 OpenCv 4.5.3。
原来我少了一个dll文件。
更具体地说,我使用 pip 安装了 opencv。但是,我没有选择contrib版本。
因此,修复它很简单
py -m pip uninstall opencv-python
py -m pip install opencv-contrib-python