我在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;
}
Run Code Online (Sandbox Code Playgroud)
输出始终为"-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
}
Run Code Online (Sandbox Code Playgroud)
在cap_ffmpeg.cpp内部文件中.
我已经在雪豹的Mac下测试了相同的代码并且它可以工作.这里没有惊喜,因为它一定是图书馆问题.我使用c-function cvCapture轻松快速地打开了具有相同路径路径的avi文件.我得到了mi调试文件中包含的所有'C:\ opencv\opencv\build\x86\vc10\bin'的dll.我得到了tbb.dll和包含的所有'C:\ opencv\opencv\3rdparty\ffmpeg'内容.
这让我疯了,所以任何帮助都会受到赞赏.
提前致谢.
小智 5
在我的情况下,删除所有opencv_***.dll文件后解决了同样的问题C:\Windows\System32.所以,我只是通过路径来使用dll文件"%PATH%;C: \Program Files \OpenCV2.4.2\build\x86\vc10/bin".请试一试.
| 归档时间: |
|
| 查看次数: |
18539 次 |
| 最近记录: |