Opencv 视频捕获可以';在VS 2010中调试时无法打开文件

Opencv 视频捕获可以';在VS 2010中调试时无法打开文件,opencv,visual-studio-debugging,Opencv,Visual Studio Debugging,当我运行代码时,视频文件会完全打开。当我调试时,它不会打开。我已将命令行参数放入调试属性中,并已检查它们是否正确加载。我还尝试将文件名放入构造函数(不带argv),但再次失败。有什么想法吗 VideoCapture myCapture(argv[1]); if (!myCapture.isOpened()) { cout << "Can not load video file" << endl; return -2; } VideoCapture-myC

当我运行代码时,视频文件会完全打开。当我调试时,它不会打开。我已将命令行参数放入调试属性中,并已检查它们是否正确加载。我还尝试将文件名放入构造函数(不带argv),但再次失败。有什么想法吗

VideoCapture myCapture(argv[1]);
if (!myCapture.isOpened())
{
    cout << "Can not load video file" << endl;
    return -2;
}
VideoCapture-myCapture(argv[1]);
如果(!myCapture.isOpened())
{

cout我相信您在依赖项列表中为调试配置指定了库的调试版本和发布版本。通常这种问题都是由此引起的

这些库有两个版本

opencv_X.lib(发布库)

opencv_Xd.lib(调试库)


在链接器的附加依赖项部分中,仅列出用于调试配置的库的调试版本和用于发布配置的发布版本。

我最近遇到类似问题。视频文件在发布模式下打开,但在调试模式下打开失败

事实证明,OpenCV的VideoCapture类需要OpenCV_ffmpeg****.**.dll来打开视频,而不管项目是处于发布模式还是调试模式

我通过将opencv_ffmpeg2411_64.dll添加到包含调试模式可执行文件的目录中修复了它。可以在opencv\x64….\bin中找到.dll。发布模式对我有效,因为包含可执行文件的发布目录具有opencv_ffmpeg2411_64.dll

注1:对于x86项目,应使用opencv_ffmpeg2411.dll而不是opencv_ffmpeg2411_64.dll,并且opencv路径中的“x64”应替换为x86


注意2:用项目所用的OpenCV版本替换.dll中的2411。

对不起,你说它在运行代码时打开,但在调试时不打开是什么意思?我可能缺少一些术语,所以请尝试expandok。我发布的代码中有一个条件,它检查视频文件是否为op正确命名,!myCapture.isopend()。当我运行此命令时,条件为false。当处于调试模式时,条件为true,程序终止(返回-2)。哦,这听起来很奇怪,你尝试过了,VideoCapture myCapture(“finename.avi”)?是的,它也不起作用。项目目录中的文件很奇怪吗?如果不是,您确定路径正确吗?为了确保一切正常,请尝试使用网络摄像头运行videcapture,如果它给出结果,则文件一定有问题否,不是这样。我已正确链接调试模式库,但仍然是VideoCapture无法打开任何视频。