windows中的VideoCapture OpenCV 2.4.2错误

windows中的VideoCapture OpenCV 2.4.2错误,opencv,Opencv,我在WindowsXP32位下使用OpenCV 2.4.2的VideoCapture类时遇到问题。 它不会打开任何文件或相机,修复它是一件痛苦的事情。 我正在使用VisualStudio2010,但我也尝试了QTcreator中的代码,得到了相同的结果 测试代码如下所示: #include "opencv/cv.h" #include "opencv/highgui.h" #include <iostream> #include <string> #include &l

我在WindowsXP32位下使用OpenCV 2.4.2的VideoCapture类时遇到问题。 它不会打开任何文件或相机,修复它是一件痛苦的事情。 我正在使用VisualStudio2010,但我也尝试了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; 
}
在cap_ffmpeg.cpp内部文件中

我已经在雪豹下的mac电脑上测试了相同的代码,它可以正常工作。这并不奇怪,因为这一定是图书馆的问题。 我使用c函数cvCapture轻松快速地打开了具有相同路径路径的avi文件。 我得到了“C:\opencv\opencv\build\x86\vc10\bin”的所有DLL 包含在mi调试文件中。我得到了tbb.dll和所有包含的“C:\opencv\opencv\3rdparty\ffmpeg”内容

这让我抓狂,所以任何帮助都将不胜感激


提前感谢。

在我的例子中,删除
C:\Windows\System32
中的所有
opencv\u***.dll
文件后,同样的问题得到了解决。因此,我仅通过路径使用dll文件,如
%path%;C:\Program files\OpenCV2.4.2\build\x86\vc10/bin“
。请试一试

我也遇到了这个问题,通过纠正函数的路径解决了它:

VideoCapture cap(videoName);
如果videoName的AVI文件不存在,则会出现错误:

(../../modules/highgui/src/cap_ffmpeg_impl.hpp:XXX)

其中XXX表示行号。

在Windows 8(64位)opencv 2.4.10下运行时,我对open方法有相同的问题。IDE在x86中运行

我发现在版本配置中运行应用程序解决了这个问题

我偶然发现了答案,因为我和imread有同样的问题。这个问题在这个线程中出现。

有关mp4文件,请参阅我在下面找到的修复程序。 我在Windows7上也遇到了同样的问题,使用的是OpenCV 2.4.9。我正在使用opencv的java包装器

Matthias Krings为此做了大量研究。看见显然,这是一个基于视频文件类型的问题。对于.avi文件,它似乎适用于很多人。不幸的是,他设置OPENCV_DIR的解决方案对我不起作用。但是他在bug列表中的评论给了我一个解决问题的提示

你必须做两件事:

  • 设置
    java.library.path
    以包含目录
    {opencv\install\dir}opencv-2.4.9\build\x86\vc10\bin
    。您可以使用java命令行上的
    -D
    选项设置变量:
    java-Djava.library.path=path\u TO\u您的DLL…
    。还可以使用
    System.getProperty(…)
    从您的环境中获取此变量,并在调用
    loadLibrary()
    之前将其打印出来,以验证路径设置是否有效
  • 在java类中,使用
    System.loadLibrary(“opencv_ffmpeg249”)加载ffmpeg dll。应在java中的
    静态块中调用
    loadLibrary()
    函数
  • 在我们设置的
    java.library.path
    中有一个名为
    opencv\u ffmpeg249.dll的文件
    
  • 这也适用于ubuntu,适用于
    .so
    文件

  • 我也遇到了同样的问题,并在指向输入视频的正确位置后解决了。

    第一个答案可能是您的情况:尝试将opencv_ffmpeg242d.dll或opencv_ffmpeg242.dll复制到您当前的工作目录。另外,您是否自己构建了OpenCV?你确定所有依赖项都正常吗?我仍然有同样的问题。我在一些论坛上读到,可能需要更新编解码器。我试试看。您解决问题了吗?我(保守地)尝试将所有opencv_*.dll文件移出Windows\System32和Windows\SysWOW64。重新启动,仍然无法工作。拉上DLL的拉链,取出原件;重新启动,效果很好!所以杨世权的建议很好。
    (../../modules/highgui/src/cap_ffmpeg_impl.hpp:XXX)