当我运行代码时,视频文件打开完美。当我调试时它不会打开。我已将命令行参数放在调试属性中,并且已检查它们是否已正确加载。我还尝试将文件名放在构造函数中(不带argv)但又失败了。有什么想法吗?
VideoCapture myCapture(argv[1]);
if (!myCapture.isOpened())
{
cout << "Can not load video file" << endl;
return -2;
}
答案 0 :(得分:2)
我相信你在依赖列表中为调试配置指定了库的调试版和发行版。一般来说,这种问题都是由此产生的。
这两个版本的库。
opencv_X.lib(发布库)
opencv_Xd.lib(调试库)
在Linker的附加依赖关系部分中仅列出用于调试配置和发布配置的发行版本的库的调试版本。
答案 1 :(得分:0)
我最近遇到了类似的问题。视频文件在发布模式下打开,但无法在调试模式下打开。
事实证明,无论项目是处于发布模式还是调试模式,OpenCV的VideoCapture类都需要opencv_ffmpeg **** _ **。dll才能打开视频。
我通过将opencv_ffmpeg2411_64.dll添加到包含调试模式可执行文件的目录来修复它。 .dll可以在opencv \ x64 ..... \ bin中找到。发布模式对我有用,因为包含可执行文件的发布目录包含opencv_ffmpeg2411_64.dll。
注1:对于x86项目,应使用opencv_ffmpeg2411.dll而不是opencv_ffmpeg2411_64.dll和&#34; x64&#34;在OpenCV路径中应该用x86替换。
注意2:使用用于项目的OpenCV版本替换.dll名称中的2411.