0.版本选择
由于Qt5无法与最新的vs2022兼容,扩展工具中一直显示不可用,所以将vs降级成vs2017。
在安装Qt的过程中,会选择安装Qt套件,其中就的MCVS 2017,说明vs2017是与qt兼容的。
当然也可以用qt creator这一原生IDE。
OpenCV版本目前是最新的4.8.0,使用过程中没有什么问题,但是还是安装低版本大概率避免一些玄学问题。
1.安装vs 2017和MingW
我选择安装的是vs2017专业版,过程略
mingw是win平台下gcc ,g++工具包等,熟悉Linux的可能经常用到,安装后在命令行编译源码了。
官网往下翻:https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/
可以选择在线安装器,也可以选择安装包解压缩。后面的后缀不需要去知道,我选择第二个。
解压缩以后在本地文件中找到bin文件夹,里面有很多exe,这些都要添加到环境变量当中。
找一个合适的位置存放mingw,然后copy地址,粘贴到环境变量当中,让系统识别到bin下面的可执行程序,重启电脑。
测试:输入g++ --version,打印内容显示检测到8.1.0的版本,完成。
2.安装Cmake
cmake官网:https://cmake.org/download/
找一个合适的版本下载,Windows下比较方便,可以直接在线安装cmake,所以直接选择.msi
按选择的是3.26.4,推荐在线安装节省时间;
当然也可以源码安装,这就需要刚才下载的mingw了。
安装:选择添加到环境变量,新建桌面图标
检查一下环境变量,安装完成后系统会自动给你添加进去。同时桌面会生成一个cmake-gui的图标。就是可视化操作cmake编译。
cmake编译的原理和过程可以自行百度一下,了解过程有利于编译操作。
3.安装OpenCV
(1)下载opencv
OpenCV官网:https://opencv.org/releases/
Windows下可以安装exe执行程序(直接点击Windows),当然也可以下载可跨平台的源码(Sources)来安装。Linux下只能源码安装。
区别的话,直接运行编译好的exe,程序会直接将OpenCV的库打包成一个名字叫opencv_world的库,这里面包含了所有的库文件,就是说链接库文件的时候直接连接到这一个库就好了。
源码编译的自由度比较高,可以选择安装哪一些库文件,当然也可以安装成一个总的opencv_world。
为了更好的认识各种库扮演的角色,我这里选择源码安装,所以就要用到cmake编译工具。
解压zip后,OpenCV文件夹中不仅有源码还有相关测试代码和data,以及下方的CMakeLists.txt。
(2)下载opencv-contrib
自从OpenCV 3.0之后,很多经典的算法,比如sift和surf特征点检测算法,由于专利原因,已经不包含在OpenCV的源码当中了,需要下载OpenCV contrib包才能继续使用。
opencv-contrib:https://github.com/opencv/opencv_contrib/tags
找到对应的版本号下载,解压缩。
(3)cmake编译opencv源码
第一行是你的源码文件,第三行是你要编译到哪里,通常都是新建一个build来存放,这样显得整齐,不破坏源码文件。
点击configure,选择你的编译平台和架构,其他默认,开始配置:
等待2分钟左右,编译会显示done,这时候上面会出现很多模块。但是检查一下会出现很多爆红的,大概意思就是没有下载到链接(被墙了),也就意味着我们要将这一部分手动下载,这也是最麻烦的一步了,如果无法解决,那还是回到之前说的,直接exe在线安装!
到opencv-4.5.5/build目录中找到CMakeDownloadLog.txt日志文件,里面提供了无法下载的包的网址,我们要做的就是一个一个去下载;比如圈起来的部分,前面是下载网址,
打开D:\Tools\opencv-4.5.5.cache,发现里面的内容都是0kb,也说明了文件没有下载下来,我们要做的就是下载对应的文件,然后替换掉他,但要保证名字一样。
这时候分两种情况:
一种是输入网址会下载不同后缀的包文件,找到后复制到.cache文件夹下对应的目录中,并修改名字,确保和0kb的那个文件名字一致。
另一种情况是输入网址会给出一些指令,不要复制到本地保存,直接找到本地文件的名字,复制名字,在网页中右击另存为,存到目标位置并用刚才复制的名字,提示是否替换选择是。
然后重新配置,done以后没有标红了,根据自己的需要选择编译的包,我这里选择了opencv_world和with qt、with opengl。选完后点击generate生成,done后点击open project,用vs 2017来打开
打开vs2017以后,右边会出现整个sln,右击-批生成-选择两种ALL_BUILD和ALL_INSTALL:
点击生成,等待大概20分钟,如果有未编译通过的,大概率是字符规则的问题,解决方案:https://blog.csdn.net/pypyquixue/article/details/123448814
这个链接中评论区有个回答是有用的,大意就是报错区域附近有日文注释,编译器看不懂,删掉那几句日文注释就好啦。
修改完以后,一定要清理解决方案,再重复批生成那一步。大概率是没问题的,我也试过最新版本,也是没问题的。
(4)cmake编译opencv—contrib
这个文件可以理解为扩展包,里面一些特殊的库放在里面,对于常用的算法基本用不到。为了完整,也同时编一下吧,流程跟之前的几乎一致:
打开cmake-gui,保持之前的选择路径不变
搜索extra,选择路径就是你下载的opencv-contrib文件夹下面的modules;
搜索OPENCV_ENABLE_NONFREE,选择
点击configure,还是爆红,像上面一样解决,查找,手动下载,替换~~。
ok.