Qt5.9 with MinGW5.3.0 编译OpenCV3.2.0
How_to_setup_Qt_and_openCV_on_Windows
按照Qt WiKi的步骤来,使用Qt5.9的MinGW5.3.0编译器来编译OpenCV3.2.0。
如果要编译OpenCV4的话要使用Qt 5.12.2 with MinGW 7.3.0。
一开始使用MinGW5.3.0编译OpenCV3.4.6,因为第三方库ffmpeg没下载成功,编译失败。找了下淘宝,也没成功,说OpenCV3.4.6需要使用MinGW7.3.0来编译,也不知道真的假的,没有细究。反正从调用库函数的层面上来说,这俩OpenCV版本基本没啥区别。有空再试试编译OpenCV3.4.6。
中间唯一遇到的问题就是第三方库ffmpeg没下载成功。
Google下载ffmpeg的dll文件
CMake编译opencv-3.2.0出现 Downloading opencv_ffmpeg.dll...
CMake编译OpenCV4.0时opencv_ffmpeg.dll等下载失败的解决思路总结
错误解决——Cmake编译openCV出现“Error in configuration process,project files may be invalid”
通过参考上面仨,基本知道了问题解决的原理,下载好需要的dll文件并且MD5加密也匹配,最后就编译好了。上面老哥通过分析cmake文件想出解决方法的分析思考钻研习惯值得学习。
ffmpeg.cmake文件如下
https://raw.githubusercontent.com/opencv/opencv_3rdparty/${FFMPEG_BINARIES_COMMIT}/ffmpeg/)ocv_download(PACKAGE opencv_ffmpeg.dll。
这个网址中的${FFMPEG_BINARIES_COMMIT}实际上是ffmpeg.cmake前面几行中set(FFMPEG_BINARIES_COMMIT "2a19d0006415955c79431116e4634f04d5eb5a74")已经赋好了相应的值。
注意这仨文件的下载地址都是https://raw.githubusercontent.com/opencv/opencv_3rdparty/2a19d0006415955c79431116e4634f04d5eb5a74/ffmpeg/开头的,ffmpeg.cmake文件第4到6行的宏定义是仨文件的Hash码,用来下载下来加密解密匹配用的,而不是网址。
所以只需要在浏览器中输入https://raw.githubusercontent.com/opencv/opencv_3rdparty/2a19d0006415955c79431116e4634f04d5eb5a74/ffmpeg/opencv_ffmpeg.dll并且回车就可以开始文件 opencv_ffmpeg.dll的下载了,并且这个文件的harsh码应该是正确的。
下载完之后按照参考文章所说的放到sources\3rdparty\ffmpeg\downloads目录中的2a19d0006415955c79431116e4634f04d5eb5a74文件夹中即可。实际上这个文件夹的名称就是对应的哈希码。opencv_ffmpeg_64.dll文件的下载也是一样的。
根据CMake的报错提示,还要下载ffmpeg_version.cmake。浏览器输入https://raw.githubusercontent.com/opencv/opencv_3rdparty/2a19d0006415955c79431116e4634f04d5eb5a74/ffmpeg/ffmpeg_version.cmake
这个网页只能另存为为txt文件,然后再把下载下来的txt文件通过重命名的方法修改为cmake文件。注意不要直接拷贝网页内容到自己新建的txt文件,这样MD5加密是不匹配的。
测试Demo
完全参照Qt Wki How_to_setup_Qt_and_openCV_on_Windows上的例程,Qt5.9 OpenCV3.2.0测试例程(Win10)。