我正在尝试在Fedora 11系统上使用openCV 1.0的highgui.cvCreateFileCapture(路径)函数打开视频文件。不幸的是,这个函数总是返回null。我试图在几种不同的视频格式上使用它,我甚至采取了在openCV wiki(http://opencv.willowgarage.com/wiki/VideoCodecs)上推荐的步骤,使用mencoder转码为RAWI420,如下所示:
$ mencoder in.avi -ovc raw -vf format=i420 -o out.avi
这似乎没有效果,所以我有点卡住了。没有产生错误,返回null(或者,因为我正在使用python包装器,None)。我安装了ffmpeg,ffmpeg-devel和ffmpeg-libs,所以我认为我应该有适当的编解码器支持。有谁知道如何解决这个问题,或者代替解决方案,可以采取哪些步骤来调试问题?
答案 0 :(得分:1)
我在Ubuntu 10.10上遇到了这个问题,对我来说这是库的一个问题。我找不到哪个库是丢失的库,但我发现在编译OpenCV之前执行Openframeworks的安装脚本工作了!
答案 1 :(得分:0)
这取决于您安装OpenCV的方式。 OpenCV可以使用许多不同的引擎之一来读取视频文件,包括ffmpeg,gstreamer和xine(我相信)。确保您的安装确实使用ffmpeg作为引擎。我能想到的最简单的方法是调用“ldd programname”并查看ffmpeg是否被列为依赖项之一。此外,您需要确保引擎能够处理您的视频编解码器。
不幸的是,OpenCV对导致错误的原因非常安静。返回NULL可能意味着“无法处理编解码器”,它可能意味着“访问被拒绝”。您可以通过strace运行您的进程,并查看系统调用返回的内容作为一种可能的选项。最糟糕的情况是,您需要使用调试器并在调用cvCreateFileCapture时遍历代码。希望这会有所帮助。
答案 2 :(得分:0)
OpenCV已经在版本2.x
帮自己一个忙,并将其更新到2.1版(至少)