(本篇博客图没有加特别多,详细可以参考我文末列出的所有参考文献。)
一、涉及环境配置
Windows 10
VS Code 1.52.1
MinGW-w64,7.3.0,x86_64,poxic,zeh
CMake 3.18.5
opencv-3.4.10 + opencv-contrib-3.4.10
二、安装VS Code
这一块没啥好说的了。
必须安装的扩展:C/C++,微软官方的语言支持。
推荐安装的扩展:Chinese (Simplified) Language,微软官方简中语言包。code runner,可以在主界面右上角直接运行程序,详细请自行查阅。
三、安装MinGW
这一步涉及到了gcc和g++,这是针对C和C++的编译器。
这个软件的官网http://www.mingw.org/八成是上不去的,建议到https://sourceforge.net/projects/mingw-w64/来下载。
选中File,往下翻
在这里推荐install.exe,这个程序的下载比下边的这些都快,而且可以自定义安装版本。
在这里推荐装在C盘里,而且路径不要有空格。
安装好后,把根目录下的/bin路径放进系统环境变量
比如我的:
C:\MinGW\mingw64\bin
安装完成之后,如果在终端输入gcc -v或者g++ -v有响应版本号的输出,即安装成功。
四、编译OpenCV
我是下载的source源码,下载官网的win版本的exe安装程序也没问题,win版本的就是多了一些动态链接库,但是咱们需要重新做这些库。
1. 编译主要过程(写的比较简略因为忘记截图了)
把opencv-contrib解压到opencv的根目录下(或者其他地方也可以,问题不大)
安装cmake,并把根目录/bin加进环境变量,比如我的:
C:\cmake-3.18.5\bin
打开/bin/cmake.exe
第一栏填opencv的源码根目录(如果是win版的,上一级/opencv/source就是)
第二栏填编译的opencv的存放目录(如果是win版的,推荐放上一级/opencv/
build/x64/MinGW)
然后点下方的Configue按钮,中间会解析出来一长串的配置选项。
这里基本不需要改,但是注意以下问题:
①有人推荐选中BUILD_opencv_world,但是我这里出错了,缺文件,只能去掉。
②OPENCV_EXTRA_MODULES_PATH这一项填contrib/module的路径,我是D:/opencv-3.4.10/opencv_contrib-3.4.10/modules,供参考。如果不需要装contrib忽略此步
③我因为出过的某些error,选中了ENABLE——CXX11,不知道是否必要,请读者自行尝试。
修改完之后按Configue选择MinGW Makefiles - Specify native compilers,添加MinGW根目录/bin下的编译器(gcc对应c,g++对应c++),cmake会编译opencv主体,(如果有加装contrib,这一步会额外解析出contrib包中的module,需要多configue一次),列表全白之后然后按generate,跑完就完成编译了。这个所有过程中,cmake界面不要出现红字,不然就去搜一下,解决一下。
编译完之后,在编译文件夹的文件资源管理器上,shift+右键,在当前页面打开power shell,输入minGW32-make
,或者minGW32-make -j4
(4是线程数,依照处理器规格决定,多线程显然更快),这个过程比较慢,而且极易出问题。100%之后输入minGW32-make install
安装,跑完就完成安装了。
现在需要把opencv编译文件夹/bin的文件夹放入环境变量中,比如我的:
D:\opencv-3.4.10\build\bin
2. 一些容易遇到的错误
① 下载文件失败
FFMPEG: Download: opencv_ffmpeg.dll
FFMPEG: Download: opencv_ffmpeg_64.dll
FFMPEG: Download: ffmpeg_version.cmake
查看错误日志可以看到,是因为无法连接到raw.githubusercontent.com的子域名中下载导致的,要么找渠道下载该文件(比如csdn上),要么可以改hosts下载
解决方法:
进入 IPAddress.com 网站查询raw.githubusercontent.com真实地址(可能会变,我查到的是199.232.96.133)
管理员权限打开C:\Windows\System32\drivers\etc\hosts(需要进终端,自行查阅吧)
在文末添加一行
199.232.96.133 raw.githubusercontent.com
就基本可以解决,有些文件比较大,可能得多等一会,或者参考CMake opencv时Download: opencv_ffmpeg.dll、ippicv等失败的解决方法,自行替换.cache中的文件。
② 下载face_landmark_model.dat失败
这个也是在上边那个域名中下载的,但是因为文件有70多M,会超时失败。
建议参考上边那个解决办法,自行打开域名用浏览器下载。
③ 缺vs_version.rc.obj错误
FAILED: modules/core/CMakeFiles/opencv_core.dir/vs_version.rc.obj
解决方法:
编译的时候搜索OPENCV_ENABLE_ALLOCATOR_STATS这一项