我与新版本的 OpenCV 2.4.7 战斗了将近一个星期(之前使用的是 2.4.2)。我使用新设置的动机是我在使用 Videowriter 处理未压缩的灰度视频 (http://answers.opencv.org/question/3603/videowriter-videocapture-and-uncompressed-avi/) 时遇到了问题。在 https://github.com/Itseez/opencv/pull/1516 “akarsakov”建议在没有 vfw 支持的情况下构建 OpenCV,并通过 ffmpeg 打开未压缩的视频。这就是我试图做的。我基本上遵循了该视频中提到的说明:http://docs.opencv.org/trunk/doc/tutorials/introduction/windows_install/windows_install.html
我已经使用 Qt 5.1.1 ( http://answers.opencv.org/question/24184/how-to-compile-opencv-247-with-qt-and-ffmpeg/ ) 成功构建了 opencv。但我无法让 VideoWriter 和 VideoCapture 为我工作。所以我做了什么:
我从 http://ffmpeg.zeranoe.com/builds/ 下载了最新的 ffmpeg 版本
我生成了禁用 VfW 并启用 ffmpeg 的 vs2010 项目:
Video I/O: Video for Windows: NO DC1394 1.x: NO DC1394 2.x: NO FFMPEG: YES (prebuilt binaries) codec: YES (ver 55.18.102) format: YES (ver 55.12.100) util: YES (ver 52.38.100) swscale: YES (ver 2.3.100) gentoo-style: YES OpenNI: NO OpenNI PrimeSensor Modules: NO PvAPI: NO GigEVisionSDK: NO DirectShow: YES Media Foundation: NO XIMEA: NO
我将 ffmpeg 的包含目录和库添加到 highgui 模块。
我无法在没有任何错误的情况下编译 OpenCV,但我所看到的行为并不是我所期望的:
- 在没有 VfW 的情况下构建 OpenCV 2.4.7 -> VideoWriter.open () 始终返回 false!
- 使用 VfW 构建 OpenCV 2.4.7 -> VideoWriter.open () 此时返回 true,在同一对象上调用 release() 和 open() 始终返回 false。
- 使用或不使用 ffmpeg -> An VideoCapture.open () 会给出一条错误消息,要求提供 libiconv-2dll!
是否有人遇到了同样的问题并且能够指出我的错误?
提前致谢。 干杯
最佳答案
OpenCV 2.4.7 需要更新版本的 FFmpeg 才能工作,但这似乎不是问题,因为您已经涵盖了这一点。
问题的原因可能是 bug #2281: VideoCapture::read fails on uncompressed video .
作为中间解决方案,我建议您降级到 OpenCV 2.4.5。
关于c++ - 带有 FFMpeg 的 OpenCV 2.4.7 支持使用 VS 2010 (x86) 构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20143022/