目录
1 准备工作
1 QT 5.12.2 安装时勾选MinGW编译器
2 OPENCV4.5.1 + OpenCV_contrib4.5.1
OpenCV 4.5.1 · mirrors / opencv / opencv · GitCode
OpenCV 4.5.1 · mirrors / opencv / opencv · GitCode
(不要使用4.5.5,会报很多错误,4.5.5版本太高,与mingw730_64编译器不兼容)
3 MINGW
系统环境变量PATH添加 E:\Qt\Qt5.12.6\Tools\mingw730_64\bin 根据QT选择路径
4 CMAKE
版本CMAKE3.24.2
2 操作步骤
1 解压下载的文件,并新建OpenCV_Bulid 文件夹,用于生成编译后的文件
2 打开CMAKE ,选择源路径和目的路径
3 点击configure
4 配置C/C++路径
E:\Qt\Qt5.12.6\Tools\mingw730_64\bin\gcc.exe
E:\Qt\Qt5.12.6\Tools\mingw730_64\bin\g++.exe
5 点击完成,等待配置完成, 会有红色项
选中“WITH_OPENGL”、“WITH_QT”、
"OPENCV_EXTRA_MODULES_PATH"路径选择 E:\opencv-4.5.1_build\opencv_contrib-4.5.1\modules
点击configure
5 此时会出现红色项可配置项 一般默认即可,再次点击 configure
注意: 此时CMAKE 下方的文本提示框会有warning 大概意思是没有下载的文件没有成功 后续将解决此警告
(由于我的电脑装了两个QT的版本 默认是低版本5.7的 我需要重新配置以下路径为高版本5.12的)
6 无红色项后 点击generate
7 打开E:\OpenCV4.5.1_Build\OpenCV_Build文件夹下的 CMakeDownloadLog.txt
复制下载地址 到下方网站下载文件 然后到存放地址 替换掉里面的文件 同时更改文件名
(存放地址里面的文件大小为0KB,该步骤就是从网上下载文件替换掉 里面的文件都需要替换 重复该步骤即可)
8 再次点击configure 此时CMAKE 下方的文本提示框应该没有警告了 点击generate
9 打开E:\opencv-4.5.5_build\OpenCV_Build 目的路径
shift+ 鼠标右击空白处 选择在此处打开命令窗口
10 命令行输入 mingw32-make -j 8 等待编译完成
11 输入mingw32-make install 安装完成
E:\opencv-4.5.1_build\OpenCV_Build\install路径下生成
编译完成
3 报错以及解决方法
1 报错(4,5,5版本):
E:/TEST/opencv-4.5.5/3rdparty/protobuf/src/google/protobuf/stubs/mutex.h: In con
structor 'constexpr google::protobuf::internal::WrappedMutex::WrappedMutex()':
E:/TEST/opencv-4.5.5/3rdparty/protobuf/src/google/protobuf/stubs/mutex.h:124:29:
error: temporary of non-literal type 'google::protobuf::internal::CallOnceIniti
alizedMutex<std::mutex>' in a constant expression
constexpr WrappedMutex() {}
解决方法:采用4.5.1版本
2 报错(4,5,5版本):
CMakeFiles\opencv_highgui.dir/objects.a(window_QT.cpp.obj):window_QT.cpp:(.text$
_ZN14OpenGlViewPort12initializeGLEv+0xd): undefined reference to `__imp_glHint'
CMakeFiles\opencv_highgui.dir/objects.a(window_QT.cpp.obj):window_QT.cpp:(.text$
_ZN14OpenGlViewPort8resizeGLEii+0xd): undefined reference to `__imp_glViewport'
CMakeFiles\opencv_highgui.dir/objects.a(window_QT.cpp.obj):window_QT.cpp:(.text$
_ZN14OpenGlViewPort7paintGLEv+0xf): undefined reference to `__imp_glClear'
collect2.exe: error: ld returned 1 exit status
解决方法:采用4.5.1版本
3 采用4.5.5版本和mingw730_64编译器解决完报错后编译出来的 没有dnn 和 objdetect 模块
解决方法:采用4.5.1版本
4 编译器找不到 boostdesc_bgm.i (4.5.1)
解决方法:见操作步骤7
4 测试
1 新建QT工程 编译器MinGW64
环境变量Path添加动态库路径
E:\opencv-4.5.1_build\OpenCV_Build\install\x64\mingw\bin
PRO文件中添加
cpp文件:
运行结果: