【问题标题】:Unable to create a basic video file using OpenCV无法使用 OpenCV 创建基本视频文件
【发布时间】:2011-08-12 12:25:09
【问题描述】:

我正在尝试使用 OpenCV(在 Python 中)创建一个基本的视频文件。我有以下代码,它运行没有任何错误,但我没有看到创建的输出文件。我想知道是否有人知道出了什么问题。

from cv import *
im1 = LoadImage("/home/spoll/laptop1.jpg")
im2 = LoadImage("/home/spoll/laptop2.jpg")

writer = CreateVideoWriter("/home/spoll/out", CV_FOURCC('F', 'L', 'V', '1'), 2, (im1.width, im1.height))
if writer is None:
    print "Error in creating video writer"
else:
    print WriteFrame(writer, im1)
    print WriteFrame(writer, im2)

谢谢!

【问题讨论】:

    标签: python opencv


    【解决方案1】:

    为什么不检查错误?如果CreateVideoWriter() 失败了,你永远不会知道。

    我认为 CreateVideoWriter 正在返回 NULL。添加适当的代码以检查返回并验证是否为真。

    如果是,问题很可能是CV_FOURCC() 找不到编解码器。

    然后,检查其他编解码器的答案:Creating AVI files in OpenCV

    我还建议您将 OpenCV 更新到最新版本(我认为它是 v2.2)。

    编辑

    您还缺少 CreateVideoWriter 中的最后一个参数:

    #!/usr/bin/env python
    import sys
    
    from opencv.cv import *
    from opencv.highgui import *
    
    im1 = cvLoadImage("img1.jpg")
    if not im1:
        print "Could not load im1"
    
    im2 = cvLoadImage("img2.jpg")
    if not im2:
        print "Could not load im2"
    
    fps = 4.0
    frame_size = cvGetSize(im1)
    #writer = cvCreateVideoWriter("out.avi", CV_FOURCC('M', 'J', 'P', 'G'), fps, frame_size, True)
    writer = cvCreateVideoWriter("out.avi", CV_FOURCC('F', 'L', 'V', '1'), fps, frame_size, True)
    if not writer:
        print "Error in creating video writer"
        sys.exit(1)
    else:
        print cvWriteFrame(writer, im1)
        print cvWriteFrame(writer, im2)
    
    cvReleaseVideoWriter(writer)
    

    我认为 OpenCV/Linux/Python 在 cvCreateVideoWriter() 方面存在问题。我将尝试与开发人员交谈,并在收到回复时在此处更新。

    【讨论】:

    • 感谢您的回复 :) 我是 python 新手,如果这是一个愚蠢的问题,很抱歉,但由于这通过 python 绑定工作,我是否仍然在创建 CreateVideoWriter 时检查 None?我认为它返回一个非空对象。我还尝试了您提到的链接中提到的所有不同编解码器,并且我正在运行 OpenCV 2.2。但问题仍然存在:s 还有什么我可以尝试的吗?再次感谢
    • 我添加了一个“如果作者是无:打印“错误””检查。是的,我有权在此目录中创建文件。感谢您的帮助,非常感谢您抽出宝贵的时间!
    • 哦,对不起,我实际上是用 im1.width 和 height 运行它。我不小心粘贴了错误的版本。对此感到抱歉。
    • 我的最后一个建议是在您的系统上重新安装 ffmpeg。检查:opencv.willowgarage.com/wiki/FFMPEG
    • 您收到该错误是因为您导入 OpenCV 的方式必须使用 ReleaseVideoWriter,从开头删除字母 cv。或者是我的代码?
    猜你喜欢
    • 1970-01-01
    • 2023-01-04
    • 2018-03-01
    • 2015-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-08
    相关资源
    最近更新 更多