OpenCV使⽤CMake和MinGW的编译安装及其在Qt配置运⾏
前⾔
本篇博⽂是使⽤ 32 位的 MinGW 在 Windows 下编译 OpenCV ⽣成 32 位的 dll。
关于使⽤ 64 位的 MinGW 编译 OpenCV ⽣成 64 位的 dll,见:
编译好的 OpenCV(MinGW 版):
软件环境
Windows-10-64bit
OpenCV 的 MSVC 版及 MinGW 版
MSVC 版
下载的 OpenCV ⽂件夹会有:
build (已编译好的库)
sources (源码)
使⽤ MSVC 的话,直接在
build/x64/vc14
⾥⾯就有了,配置好路径就可以使⽤。
MinGW 版
OpenCV 没有为我们编译好 MinGW 版,所以我们只能⾃⼰编译,下⾯就是介绍 MinGW 版的编译流程。
也可以直接下载使⽤我编译好了的 OpenCV (在上⽂)。
安装及配置 Qt、MinGW、CMake
安装
CMake ⾃⾏安装,Qt 和 MinGW 可以直接使⽤qt-opensource-windows-x86-5. 安装包安装,注意选择安装的组件(components)的时候勾选 MinGW :
Qt-Qt5.9-MingGW 5.3.0 32 bit
Qt-Tools-MinGW 5.3.0
配置 Qt、MinGW
安装好后打开 QtCreator,在⼯具-选项-构建和运⾏-构建套件,选中Desktop Qt 5.9.3 MinGW 32bit,设为默认,OK。
添加 MinGW 到环境变量
为⽤户变量 Path 添加 E:\Qt\Qt5.9.3\Tools\mingw530_32\bin
使环境变量⽣效
打开命令提⽰符 CMD,运⾏ set PATH=C:,更改当前窗⼝任务的环境变量,关闭这个 CMD。
再次打开另⼀个 CMD,运⾏ echo %PATH%,显⽰最新的环境变量,会发现刚刚添加的 MinGW 环境变量已经⽣效。使⽤ CMake ⽣成 OpenCV 的 Makefile
打开 cmake-gui,设置源码和⽣成路径:
Where is the source code: E:/OpenCV_3.3.1/opencv/sources
Where to build the binaries: E:/OpenCV_3.3.1/opencv-build
点击 Configure,设置编译器
Specify the generator for this project: MinGW Makefiles
Specify native compilers
Next
Compilers C: E:\Qt\Qt5.9.3\Tools\mingw530_32\
Compilers C++: E:\Qt\Qt5.9.3\Tools\mingw530_32\bin\g++.exe
Finish
编译配置:
勾选 WITH_QT为什么现在都用cmake
勾选 WITH_OPENGL
点击 Configure,再次配置:
不勾选 WITH_IPP
设置 QT_MAKE_EXECUTABLE 为 E:\Qt\Qt5.9.3\5.9.3\mingw53_32\
设置 Qt5Concurrent_DIR 为 E:\Qt\Qt5.9.3\5.9.3\mingw53_32\lib\cmake\Qt5Concurrent
设置 Qt5Core_DIR 为 E:\Qt\Qt5.9.3\5.9.3\mingw53_32\lib\cmake\Qt5Core
设置 Qt5Gui_DIR 为 E:\Qt\Qt5.9.3\5.9.3\mingw53_32\lib\cmake\Qt5Gui
设置 Qt5Test_DIR 为 E:\Qt\Qt5.9.3\5.9.3\mingw53_32\lib\cmake\Qt5Test
设置 Qt5Widgets_DIR 为 E:\Qt\Qt5.9.3\5.9.3\mingw53_32\lib\cmake\Qt5Widgets
设置 Qt5OpenGL_DIR 为 E:\Qt\Qt5.9.3\5.9.3\mingw53_32\lib\cmake\Qt5OpenGL
设置 CMAKE_BUILD_TYPE 为 Release 或者 RelWithDebInfo
点击 Generate ⽣成 Makefile
编译 OpenCV
打开终端进⾏编译:(-j 是使⽤ 8 个线程进⾏编译,请根据你的计算机配置合理设置线程数)
E:
cd E:\OpenCV_3.3.1\opencv-build
mingw32-make -j 8
mingw32-make install
如果 mingw32-make -j 8 遇到错误,请看下⾯的 编译 OpenCV 常见错误,否则执⾏ mingw32-make install,完成安装。编译 OpenCV 常见错误
0. 多线程编译错误信息不明确
表现
如果使⽤了多线程编译,导致错误,但是错误信息不明确,如:
Makefile:161: recipe for target 'all' failed
mingw32-make: *** [all] Error 2
解决
使⽤单线程编译:
mingw32-make
以查看详细的错误提⽰,再根据具体情况解决。
1. RC 错误
表现
... : unknown option -- W ...
或者
FORMAT is one of rc, res, or coff, and is deduced from the file name extension if not specified.  A single file name is an input file.
No input-file is stdin, default rc.  No output-file is stdout, default rc.
解决
在 cmake-gui 编译配置中:
不勾选 ENABLE_PRECOMPILED_HEADERS
然后重新 Configure-Generate-mingw32-make
2. sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA 错误表现
...opencv/sources/modules/videoio/src/cap_
... 'sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA' was not declared in this scope ...
或者
Makefile:161: recipe for target 'all' failed
mingw32-make: *** [all] Error 2

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。