【问题标题】:OpenCV VideoWriter with python gives 5.54kb file带有 python 的 OpenCV VideoWriter 提供 5.54kb 文件
【发布时间】:2013-06-24 02:05:03
【问题描述】:

我正在尝试使用 OpenCV 在 python 中创建 TimeLapse 创建器,并具有以下代码:

import cv2
import os
import string

directory = (r"C:\Users\Josh\Desktop\20130216")
video = cv2.VideoWriter(r"C:\Users\Josh\Desktop\video.avi", cv2.cv.CV_FOURCC('F','M','P', '4'), 15, (1536, 1536), 1)

for filename in os.listdir(directory):
    if filename.endswith(".jpg"):
        video.write(cv2.imread(filename))

cv2.destroyAllWindows()
video.release()

文件夹里有1440张图片,而video.avi只有5.54kb大小,播放时输出为空。任何人都可以看到我的代码中的任何缺陷并给我任何帮助吗?

【问题讨论】:

  • 您是否尝试过单独显示图像?这会告诉你图像是否真的被读取(即它们的路径是有效的))。

标签: python opencv video


【解决方案1】:

似乎是,您的 Windows 不支持 ffmpeg。 我遇到了同样的问题,OpenCV 2.4 VideoCapture not working on Windows 帮助了我。

opencv246\opencv\3rdparty\ffmpeg\opencv_ffmpeg.dll 应该复制到 c:\Python27\opencv_ffmpeg246.dll

您在代码中定义的帧大小为 1536x1536,因此您的所有 .jpg 文件都应匹配该大小。

video = cv2.VideoWriter(r"C:\Users\Josh\Desktop\video.avi", 
cv2.cv.CV_FOURCC('F','M','P', '4'), 15, (1536, 1536), 1)

【讨论】:

    【解决方案2】:

    cv2.VideoWriter 不能用正确的代码保存视频内容的原因是输出视频的宽高大小与输入视频的宽高大小不同。

    你需要匹配它们

    【讨论】:

      【解决方案3】:

      我有同样的问题,因为输入视频大小(widthheight)与输出文件不匹配。 我的显示 6KB。

      我相信这是因为 openCV 不打算做这种工作(录制/保存视频

      要解决此问题,只需匹配 widthheight

      width, height = frame.shape
      out = cv2.VideoWriter("output.avi", cv2.VideoWriter_fourcc('M','J','P','G'), fps, (width, height))
      

      【讨论】:

        猜你喜欢
        • 2016-05-26
        • 2017-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多