前言:
opencv官方并未提供mingw版本的库,若是用到相关编译器,需要自己编译。通常只要编译自己需要的模块就可以了,本次编译过程可供大家参考
本次编译的,是未带CUDA加速的版本
假设Qt已正常安装,笔者使用的版本是Qt5.15.2 mingw81_64版
1.安装git
这方便教程很多,不再重复。笔者使用的是git2.33
2.安装cmake
这个教程也很多,但笔者没有安装,使用的是Qt安装时,下载的
1.下载opencv4.5.3源码
https://github.com/opencv/opencv/archive/refs/tags/4.5.3.zip
2下载opencv_contrib-4.5.3源码
https://github.com/opencv/opencv_contrib/archive/refs/tags/4.5.3.zip
下载地址:https://github.com/opencv/opencv_3rdparty/tree/ffmpeg/master_20150703
建议直接下载整个项目,笔者尝试只下载需要的动态库,但未成功
detect.caffemodel
detect.prototxt
sr.caffemodel
sr.prototxt
boostdesc_bgm.i
boostdesc_bgm_bi.i
boostdesc_bgm_hd.i
boostdesc_binboost_064.i
boostdesc_binboost_128.i
boostdesc_binboost_256.i
boostdesc_lbgm.i
vgg_generated_48.i
vgg_generated_64.i
vgg_generated_80.i
vgg_generated_120.i
以上资源笔者已经下载完成,有需要的可以直接下载
环境变量设置方法很多,可以直接设置系统的环境变量,笔者使用的是在一个cmd窗口中临时设置环境变量
执行如下命令
set path=D:\Qt\Tools\mingw810_64\bin;D:\Program Files\Git\usr\bin;%path%
若是查看环境变量执行如下
echo %path%
在设置好环境变量的cmd中执行(请按实际目录执行)
D:\Qt\Tools\CMake_64\bin\cmake-gui.exe
打开如下窗口
点击configure,弹出如下窗口
以上是笔者的设置,点击Next,
设置编译器,以下是笔者的设置
configure完成后,修改配置选项
以下是笔者感兴趣的选项
安装目录(生成的动态库的目录)
是否生成动态库
是否生成付费相关的部分
添加贡献库,注意要具体到modules目录
添加Qt库(添加后,opencv相关UI会有更多控制选项)
再次点击configure后,会提示输入Qt的目录
笔者的目录是D:/Qt/5.15.2/mingw81_64/lib/cmake/Qt5,请大家不要出错,不是bin目录
继续点击configure(可以多点几次,有时多点几次就可以下载成功),
若输出中仍然存在红色的文字,打开编译目录,找到日志文件CMakeDownloadLog.txt,查看缺少或下载失败的文件,下载完成后,按日志文件的提示,放入指定目录即可
笔者已下载缺少的文件,处理方法如下
1.解压opencv_3rdparty-ffmpeg-master_20210608.zip,
把opencv_videoio_ffmpeg.dll复制到源码目录下的.cache/ffmpeg,并重命名为bab661341c30862fa88627130219c0a5-opencv_videoio_ffmpeg.dll
把opencv_videoio_ffmpeg_64.dll复制到源码目录,.cache/ffmpeg,并重命名为ac99f9767a83103c31709628af685924-opencv_videoio_ffmpeg_64.dll
把ffmpeg_version.cmake复制到源码目录下的.cache/ffmpeg,并重命名为8862c87496e2e8c375965e1277dee1c7-ffmpeg_version.cmake
2.把downloads和testdata两个目录,直接放在编译目录(笔者已整理好内部目录)
再次点击configure,此时应该不会有红色的文字了(若存在,请自主解决)
点击generate,生成makefile文件
设置好环境变量的cmd中,切换目录到编译目录(请按实际目录执行)
执行mingw32-make -j6 开始编译
(6代表同时开6个线程编译,请读者按照自己机器的配置设置,以加快编译速度)
些过程耗时较长,笔者等待了半小时左右
编译完成后,执行mingw32-make install
过会就可以在安装目录找到生成的动态库了,笔者是在编译目录下的install
因时间关系,笔者本次就不添加测试程序了
后记:
一开始,笔者还担心,又要修改源码,但结果有点让笔者意外,现在不用修改一行代码,就可以正常编译完成所有代码
已生成的动态库