【发布时间】:2012-08-30 01:52:36
【问题描述】:
我在 Windows XP 32 位下使用带有 OpenCV 2.4.2 的 VideoCapture 类时遇到问题。 它不会打开任何文件或相机,修复它很痛苦。 我使用的是 Visual Studio 2010,但我也尝试了 QTcreator 中的代码,结果相同。
测试代码如下:
#include "opencv/cv.h"
#include "opencv/highgui.h"
#include <iostream>
#include <string>
#include <iomanip>
#include <sstream>
using namespace cv;
using namespace std;
int main()
{
const char* videoPath = "C:/video/";
string videoName = string(videoPath) + "avi.avi";
VideoCapture cap(videoName);
if(!cap.isOpened())
{
std::cout<<"Fail"<<std::endl;
return -3;
}
return 0;
}
输出始终为“-3”。 Qt Creator 显示了一个 警告:打开文件时出错 (../../modules/highgui/src/cap_ffmpeg_impl.hpp:361)
我调试了一下,问题出现在第一行:
CvCapture* cvCreateFileCapture_FFMPEG_proxy(const char * filename)
{
CvCapture_FFMPEG_proxy* result = new CvCapture_FFMPEG_proxy;
if( result->open( filename ))
return result;
delete result;
#if defined WIN32 || defined _WIN32
return cvCreateFileCapture_VFW(filename);
#else
return 0;
#endif
}
在 cap_ffmpeg.cpp 内部文件中。
我已经在雪豹下的 mac 中测试了相同的代码,它可以工作。这里没有惊喜,因为它一定是图书馆的问题。 我已经使用 c 函数 cvCapture 轻松快速地打开了具有相同路径路径的 avi 文件。 我得到了 'C:\opencv\opencv\build\x86\vc10\bin' 的所有 dll 包含在 mi 调试文件中。我也得到了 tbb.dll 和所有 'C:\opencv\opencv\3rdparty\ffmpeg' 内容。
这让我发疯了,所以任何帮助都将不胜感激。
提前致谢。
【问题讨论】:
-
this question 的第一个答案可能是您的情况:尝试将 opencv_ffmpeg242d.dll 或 opencv_ffmpeg242.dll 复制到您当前的工作目录。另外,您自己构建过 OpenCV 吗?你确定所有的依赖都ok吗?
-
我还是有同样的问题。我在一些论坛上读到可能需要更新编解码器。我会试试的。问题解决了吗?
标签: opencv