我需要维护一个用C ++编写的桌面应用程序,使用Qt和OpenCV进行一些视频处理。据我所知,出于许可原因,OpenCV的解码部分被委托给单独的DLL中的ffmpeg。
开发环境在Windows 10上,使用QT Creator和64位MSVC12作为编译器。 OpenCV版本是3.0,正式发布。在这里,一切运行正常,我能够使用VideoCapture :: open()解码视频。
当我尝试以独立方式运行应用程序时出现问题,所有必需的DLL与.exe文件位于同一文件夹中。以下所有案例均为64位操作系统。
在Windows 10计算机上,与开发机器不同,没有开发人员库,视频解码工作正常。我也在Windows 8机器上进行了测试,到目前为止没有问题。
在Windows 7上,事情变得棘手。应用程序根本无法识别在先前测试期间成功加载的相同视频文件,即VideoCapture上的isOpened调用返回false。为了进一步测试,我剥离了opencv_ffmpeg300_64.dll文件以缩小Windows 10和8的问题;正如预期的那样,没有这个DLL,应用程序就无法打开相同的视频文件。
似乎在Windows 7上无法识别DLL。
编辑:使用Process Explorer进行的进一步调查清楚地表明,当应用程序在Windows 7上运行时,不会加载上述DLL。
我尝试使用WinApiOverride32进行跟踪,没有结果。
答案 0 :(得分:0)
Building and Installing OpenCV with Extra Modules on Windows 7 64-bit
答案 1 :(得分:0)
自动应答......
几个月前,通过升级到该项目的OpenCV 3.1,问题得到了解决。可能是以前版本库中的一些错误