【问题标题】:VideoCapture can't open file when debugging in VS 2010VideoCapture 在 VS 2010 中调试时无法打开文件
【发布时间】:2016-01-20 04:02:44
【问题描述】:

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

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

【问题讨论】:

  • 对不起,运行代码时打开,调试时不打开是什么意思?我可能遗漏了一些术语,所以请尝试扩展
  • 好的。我发布的代码中有一个条件,它检查视频文件是否正确打开,!myCapture.isOpened()。当我运行它时,条件为假。在调试模式下为真,程序终止(返回 -2)。
  • 哦,听起来很奇怪,你试过了,VideoCapture myCapture("finename.avi"); ?
  • 是的,它也不起作用。很奇怪
  • 你的文件在项目目录吗?如果不是,你确定路径是对的吗,为了确保一切正常,试着用网络摄像头运行视频捕获,如果它给出结果,那么文件一定有问题

标签: opencv visual-studio-debugging


【解决方案1】:

我相信您在调试配置的依赖项列表中指定了库的调试版本和发布版本。这类问题一般都是这样造成的。

这些库有两个版本。

opencv_X.lib(发布库)

opencv_Xd.lib(调试库)

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

【讨论】:

  • 不,不是这样。我已正确链接到调试模式库,但 VideoCapture 仍然无法打开任何视频。
【解决方案2】:

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

原来OpenCV的VideoCapture类需要opencv_ffmpeg****_**.dll打开视频,不管项目是release还是debug模式。

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

注意 1: 对于 x86 项目,应使用 opencv_ffmpeg2411.dll 代替 opencv_ffmpeg2411_64.dll 并且 OpenCV 路径中的“x64”应替换为 x86。

注意 2: 将 .dll 名称中的 2411 替换为项目使用的 OpenCV 版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    • 2014-12-03
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多