一、系统及软件环境
- Windows-10-64bit
- MinGW-w64-x86_64-8.1.0-release-posix-seh-rt_v6-rev0
- CMake-3.13.1
- opencv-4.0.1-vc14_vc15
二、安装 MinGW-w64 并配置其环境变量
通过 window 安装文件来安装
下载 MinGW-w64,下载地址: MinGW-w64 - for 32 and 64 bit Windows
-
安装 MinGW-w64。以管理员的身份执行安装程序,根据自己环境的情况选择安装包
然后执行下一步,如果这步出现错误就通过离线的方式来配置
离线配置 MinGW-w64. 如果使用
.exe
文件安装出现错误,可以通过离线的方式来配置 MinGW-w64。具体步骤参考下面内容。
通过离线包进行安装
下载对应版本的离线包,下载地址:x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z
提取文件到任意路径,我是直接放在
C:\
目录下;配置环境变量,将
X:\mingw64\bin
(X
为提取目录) 添加到环境变量的path
变量中,然后打开命令行执行器输入gcc -v
, 如果出现对应的版本号则表示配置成功。
三、使用 Cmake 生成 OpenCV 的 Makefile
下载对应平台的 cmake 并安装,下载地址: cmake
下载 Opencv 安装文件,这里我下载的是
opencv-4.0.1-vc14_vc15.exe
, 下载地址: opencv运行
opencv-4.0.1-vc14_vc15.exe
,将文件提取到指定目录,我这里提取到D:\
打开 cmake-gui,设置源码路径和编译文件路径,
- 点击
Configure
,设置编译器- Specify the generator for this project:
MinGW Makefiles
- Specify native compilers
- Next
- Compilers C:
C:\mingw64\bin\gcc.exe
- Compilers C++:
C:\mingw64\bin\g++.exe
- Finish
设置好后所有的配置都是红色的。(这一步中间过程会下载两个文件,分别为
opencv_ffmpeg.dll
和opencv_ffmpeg_64.dll
,但是由于网络原因可能会下载失败,具体解决办法参见错误解决方法) - Specify the generator for this project:
-
编译配置:(具体根据自己的需求进行添加和去除)
- 勾选
WITH_OPENGL
- 不勾选
WITH_IPP
- 不勾选
ENABLE_PRECOMPILED_HEADERS
- 勾选
配置好后,再次点击
Configure
,此时配置会变成白色。然后点击Generate
生成 Makefile
四、编译 Opencv
打开终端进行编译:(-j
是使用 8
个线程进行编译,请根据你的计算机配置合理设置线程数)
D:
cd opencv/mingw-build
mingw32-make -j 8
mingw32-make install
五、可能遇到的错误及解决方法
-
在配置 Makefile 文件时,卡在下载
opencv_ffmpeg.dll
和opencv_ffmpeg_64.dll
文件解决方法:
- 在下载上述文件时会在
D:\opencv\sources\.cache\ffmpeg
文件目录下生成对应的缓存文件,需要下载的文件可以在D:\opencv\build\bin
目录下找到(文件名可能不一样,需要进行修改)。 - 将
D:\opencv\build\bin
的文件复制到D:\opencv\sources\.cache\ffmpeg
目录下,并将名字改为原缓存文件夹中文件对应的名字 - 生成 Makefile 遇到下载错误时,会生成错误日志,文件路径为
D:/opencv/mingw-build2/CMakeDownloadLog.txt
,你也可以通过该日志文件中的链接下载对应的文件,总共有 3 个,另外一个是ffmpeg_version.cmake
- 在下载上述文件时会在
更多编译遇到的问题见参考链接中的文章!