QT + OPENCV + OpenCV_contrib + MINGW编译

2 篇文章 0 订阅

目录

1 准备工作

2 操作步骤

3 报错以及解决方法

4 测试

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,该步骤就是从网上下载文件替换掉 里面的文件都需要替换 重复该步骤即可)

        GitHub Proxy 代理加速 

        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文件:

        运行结果:

         

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值