QT + OPENCV + OpenCV_contrib + MINGW编译

目录

1 准备工作

2 操作步骤

3 报错以及解决方法

4 测试

1 准备工作

        1 QT 5.12.2 安装时勾选MinGW编译器

        2 OPENCV4.5.5 + OpenCV_contrib4.5.5

                OpenCV 4.5.5 · mirrors / opencv / opencv · GitCode

                GitHub - opencv/opencv_contrib at 4.5.5

        3 MINGW

                系统环境变量PATH添加 E:\Qt\Qt5.12.6\Tools\mingw730_64\bin 根据QT选择路径

        4 CMAKE

                版本CMAKE3.24.2

2 操作步骤

        1 解压下载的文件,并新建OpenCV_Bulid 文件夹,用于生成编译后的文件

QT + OPENCV + OpenCV_contrib + MINGW编译_第1张图片

         2 打开CMAKE ,选择源路径和目的路径

QT + OPENCV + OpenCV_contrib + MINGW编译_第2张图片

         3 点击configure 

QT + OPENCV + OpenCV_contrib + MINGW编译_第3张图片

        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_ENABLE_NONFREE"、

        "OPENCV_EXTRA_MODULES_PATH"路径选择 E:\opencv-4.5.5_build\opencv_contrib-4.5.5\modules

        取消勾选“BUILD_PROTOBUF”(不然会报错)

        QT + OPENCV + OpenCV_contrib + MINGW编译_第4张图片

         点击configure 

        5  此时会出现红色项可配置项 一般默认即可,再次点击 configure

        (由于我的电脑装了两个QT的版本 默认是低版本5.7的 我需要重新配置以下路径为高版本5.12的)

QT + OPENCV + OpenCV_contrib + MINGW编译_第5张图片

         6 无红色项后 点击generate

         7 打开E:\opencv-4.5.5_build\OpenCV_Build 目的路径

            shift+ 鼠标右击空白处  选择在此处打开命令窗口

        8  打开E:\opencv-4.5.5_build\OpenCV_Build\modules\highgui\CMakeFiles\opencv_highgui.dir文件夹

        打开linklibs.rsp 添加 -lopengl32(不添加会报错)

         9 命令行输入 mingw32-make -j 8

        等待编译完成

QT + OPENCV + OpenCV_contrib + MINGW编译_第6张图片

         10 输入mingw32-make install 安装完成

QT + OPENCV + OpenCV_contrib + MINGW编译_第7张图片

         E:\opencv-4.5.5_build\OpenCV_Build\install路径下生成

QT + OPENCV + OpenCV_contrib + MINGW编译_第8张图片

        编译完成 

3 报错以及解决方法

        1 报错:

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' in a constant expression
   constexpr WrappedMutex() {}

        解决方法:CMAKE取消勾选项

        QT + OPENCV + OpenCV_contrib + MINGW编译_第9张图片

        2 报错:

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

        解决方法:

QT + OPENCV + OpenCV_contrib + MINGW编译_第10张图片

        再次 mingw32-make -j 8

4 测试

        1 新建QT工程 编译器MinGW64

        环境变量Path添加动态库路径

        E:\opencv-4.5.5_build\OpenCV_Build\install\x64\mingw\bin

                   QT + OPENCV + OpenCV_contrib + MINGW编译_第11张图片

        PRO文件中添加

        QT + OPENCV + OpenCV_contrib + MINGW编译_第12张图片

 

         cpp文件:

QT + OPENCV + OpenCV_contrib + MINGW编译_第13张图片

        运行结果:

         

你可能感兴趣的:(QT,OpenCV,qt,opencv,开发语言)