QT6 Mingw-w64 opencv环境配置教程

安装环境

  • win10 64位
  • Qt-6.2.1
  • OpenCV-4.5.5
  • cmake-3.22.2
  • MinGW–W64 GCC-8.1.0 x86_64-posix-seh

首先安装QT6

QT6仅支持在线安装器安装,下载地址:QT6在线安装器

image-20220203155326717

安装MinGW–W64

注意,这里必须安装64位即win64的Mingw,即mingw-w64 8.1.0,否则不支持thread,如果Mingw是32位的则编译时会报错,类似thread和mutex不能使用,如果出现类似错误,务必重新下载mingw-w64

下载地址:https://sourceforge.net/projects/mingw-w64/files/,不要点中间的download,网页继续往下拉,点这个下载:

image-20220203154841630

注意文件名,不要下错了!

下载后解压即可,注意把bin文件夹添加PATH环境变量。

下载cmake

cmake是用来编译opencv的,下载地址:https://cmake.org/download/,如果你是windows64位,选择这个安装包下载

image-20220203154457675

下载opencv

由于官网的windows版的opencv是使用vc编译器来编译的,并不适用与mingw编译器,因此需要我们自己来编译,首先进入官网下载opencv的source文件:https://opencv.org/releases/

image-20220203154156474

编译opencv

下载后,将opencv文件解压到一个不含中文且不含空格的文件夹(否则编译时会报错),打开cmake-gui,下面根据自己需求这样填:

image-20220203153941492

点击configure

image-20220203161002247

如果出现https_connection_error,则需要添加代理服务器:添加环境变量https_proxy,如果是socks5,则格式为socks5://127.0.0.1:10808。然后多次configure,不断修改直到红色项目全去掉。如果你是qt6的话,编译选项如下所示,注意WITH_QTWITH_OPENGL打上勾就可以了,test有关的可以去掉,根据你的路径适当修改:

image-20220131204828268

编译时报错

点击generate,在build文件夹下执行命令mingw32-make -j8进行编译

image-20220203161116685

编译过程中出现如下报错:

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'

image-20220203152916035

错误做法

分析后发现,报错的这几个变量都是gl开头,说明和opengl有很大关联,于是,我在cmake的standard libaray上加上了-lopengl32

image-20220203153202071

注意!!!这样虽然可以编译通过,但是QT在导库编译程序时会报错,直接crash,暂不知原因,可能是这样编译出来的库文件存在问题。

正确做法

编译到这里出错后,打开文件夹opencv-build\modules\highgui\CMakeFiles\opencv_highgui.dir

打开文件linklibs.rsp,这里加上-lopengl32,保存文件,返回根目录重新敲命令继续编译即可编译成功

image-20220203153636370

image-20220131205101951

安装opencv

使用命令mingw32-make install即可安装opencv,安装后默认会保存在编译根目录的build文件夹下

image-20220203161039229

image-20220203153918796

QT中使用opencv库

修改xxx.pro文件,格式如下:(这里我是QT控制台项目,所以没有GUI,不能imshow(),仅做测试)

QT -= gui

CONFIG += c++11 console
CONFIG -= app_bundle

# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
        main.cpp

INCLUDEPATH += \
    "E:\ProgramData\opencv\opencv-build\install\include"

LIBS += -LE:\ProgramData\opencv\opencv-build\install\x64\mingw\lib \
        -lopencv_core455        \
        -lopencv_highgui455     \
        -lopencv_imgcodecs455   \
        -lopencv_imgproc455     \
        -lopencv_features2d455  \
        -lopencv_calib3d455
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

注意添加的INCLUDEPATHLIBS,这些文件都在你的编译的根目录的install文件夹下

教程到这里就结束了,断断续续研究了好几天,每个人遇到的问题可能都不一样,我遇到的这个编译的问题内外网都没有找到解决办法,是自己琢磨出来的,不过我的经历至少可以证明这个东西是肯定的可以搞成的,祝大家编译顺利吧!

  • 9
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
Qt是一个跨平台的C++应用程序开发框架,而Qt 5.15是最新版本。Mingw32是一个带有gcc编译器的开发工具包,用于在Windows平台上编写和编译C++程序。OpenCV是一个开源的计算机视觉库,用于处理图像和视频等多媒体数据。 如果您想在Qt 5.15中使用Mingw32和OpenCV 4.5.5,首先需要确保正确安装了Qt 5.15和Mingw32开发工具包。您可以从官方网站下载并安装这些软件。 安装完成后,您需要在Qt Creator中设置编译器选项。在“工具”->“选项”->“编译和运行”->“编译工具链”中,添加您安装的Mingw32编译器。然后,在“项目”->“构建环境”中,选择使用该编译器。 接下来,您需要在Qt项目中包含OpenCV库。将OpenCV头文件和库文件拷贝到您的项目文件夹中,然后在.pro文件中添加以下代码: ```cpp INCLUDEPATH += path/to/opencv/include LIBS += -Lpath/to/opencv/lib -lopencv_core -lopencv_imgproc -lopencv_highgui ``` 注意将上述代码中的"path/to/opencv"替换为您实际的OpenCV安装路径。 完成以上步骤后,您可以在Qt项目中包含OpenCV头文件并调用OpenCV函数进行图像处理等操作。例如,您可以使用以下代码读取和显示图像: ```cpp #include <opencv2/opencv.hpp> using namespace cv; int main(int argc, char *argv[]) { Mat image = imread("path/to/your/image.jpg"); imshow("Image", image); waitKey(); return 0; } ``` 以上是在Qt 5.15中使用Mingw32和OpenCV 4.5.5的基本步骤和示例代码。根据具体需求,您可能需要进一步了解OpenCV的其他功能和用法,并进行相应的配置和编码。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CCF小彤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值