注:系统:Windows 10 64位;
Qt 版本:Qt 5.10.1;
OpenCV版本:OpenCV 3.3.1;
文中涉及的路径仅供参考,以实际路径为准。
1、安装目录不能有空格,不能有中文。
2、安装Qt。
3、安装完Qt后配置环境变量。path:E:\Qt_x64\Qt5.10.1\Tools\mingw530_32\bin 。
4、安装OpenCV。
5、安装CMake。
6、CMake配置:
(1)路径选择:
source code: D:/opencv_x64/opencv/sources
build the binaries: D:/opencv_build4Qt_x64
(2)configure
(3)选:MinGW Makefiles
选:第二个 Specify native compilers
(4)配置C和C++编译器路径
C: C:\Qt\Qt5.5.0\Tools\mingw492_32\bin\gcc.exe
C++: C:\Qt\Qt5.5.0\Tools\mingw492_32\bin\g++.exe
(5)finish
(6)勾选: WITH_OPENGL
WITH_QT
ENABLE_CXX11
不勾选:WITH_IPP
ENABLE_PRECOMPILED_HEADERS
WITH_CUDA
BUILD_opencv_ts
与“python2”、"python3"相关的都不勾选
(7)为防止后面编译出错,而规避一些问题,对source文件做以下修改:
<1> 修改E:\OpenCV_3.3.1\opencv\sources\modules\videoio\src\cap_dshow.cpp文件,在#include "DShow.h"这行的上面加一行 #define NO_DSHOW_STRSAFE
<2>(暂时不改)打开E:\MinGW-w64\x64-4.8.1-release-posix-seh-rev5\mingw64\x86_64-w64-mingw32\include\aviriff.h
发现第一行的多行注释少了个/符号,加上保存。
关于MinGW-64以及OpenCV 4.0 的修改参考以下博文:
https://blog.csdn.net/huihut/article/details/81317102
<3> 转到opencv源所在的存储库, 找到 C:/opencv/sources/Cmake/OpenCVCompilerOptions.cmake,将下面这一行注释掉:
add_extra_compiler_option(-Werror = non-virtual-dtor)
即改为:#add_extra_compiler_option(-Werror = non-virtual-dtor)
(8)选择Qt路径
设置 QT_MAKE_EXECUTABLE 为 E:\Qt\Qt5.9.3\5.9.3\mingw53_32\bin\qmake.exe
设置 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
(9)不停configure直到不出现红色框
Generate
7、编译OpenCV
在编译生成的文件夹空白处按shift+右键,或者在cmd里切换到指定的路径,执行下面的命令,此处的路径即6.1的路径(D:/opencv_build4Qt_x64):
mingw32-make
mingw32-make install
8、添加新生成的bin到Path环境变量
把编译后,目标目录下的bin目录路径,即E:\Software\QT\OpencvBuild\bin 添加到Path环境变量中。
9、将OpenCV需要的库放到相应的文件夹下,新建OpenCV文件夹。
将D:\OpenCV\OpenCV3300\build下的“include”、“lib”、“bin”文件夹拷过来。
拷相应的dll到debug(或release)里面,以后需要什么都可以拷到这里面。
第7步遇到的一些错误:
modules\videoio\CMakeFiles\opencv_videoio.dir\build.make:173: recipe for target 'modules/videoio/CMakeFiles/opencv_videoio.dir/all' failed
opencv\sources\3rdparty\include\ffmpeg_: No such file or directory (安装路径中有空格)
'modules/videoio/CMakeFiles/opencv_videoio.dir/vs_version.rc.obj' failed
CMake Error at cmake/OpenCVFindLibsVideo.cmake:221
Cmake 编译OpenCV3.1.0过程中出现如下错误:
CMake Error: CMake was unable to find a build program corresponding to “MinGW Makefiles”. CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.
解决办法:MinGW没有找到,需要重新配置环境变量,指定Qt安装目录下MinGW位置,如…/Qt5.10.1/Tools/mingw530_32/bin/mingw32-make.exe。
cmath:1119:11: error: '::hypot' has not been declared using ::hypot;
计算机中安装有Python库时会出现此问题,解决办法是配置cmake的时候取消与"Python2"、"Python3"相关的选项并且删除相关的路径