Windows中的VideoCapture OpenCV 2.4.2错误

Som*_*ild 6 opencv

我在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".请试一试.