Qt配置OpenCV教程

9 篇文章 0 订阅
3 篇文章 0 订阅

Qt5.13.0配置OpenCV4.5.2通过CMake3.20.3

软件准备

64位win10系统
Qt 5.13.0
Cmake 3.20.3
OpenCV 4.5.2

Qt
下载

Cmake
下载

OpenCV
下载

步骤:

一、安装Qt、CMake工具、OpenCV源码解压(目录用户自定)
二、设置系统环境变量
系统环境变量
三、配置CMake源码路径、构建路径(源码路径在opencv/sources中,构建路径自定)
配置CMake源码路径、构建路径
四、指定本地编译器,分别是 QT/Tools/Mingw64/bin/中的 gcc.exe 和 g++.exe
指定本地编译器
具体
五、点击 configure 配置,配置过程中只要还有红色区域出现,就说明还要继续配置configure,直到没有红色区域,然后点击 generatre。
WITH_OPENGL true
WITH_QT true
借鉴一张图
六、generate成功后,进入build目录,打开cmd,输入

mingw32-make -j 16

在这里插入图片描述
七、mingw32-make 执行完成后 再输入

mingw32-make install -j16

在这里插入图片描述
此时库已经编译完成了!!!其中遇到了一些坑,卸载文章最后。

测试 Opencv 库

打开Qt,点击New Project 并在.pro文件中添加

INCLUDEPATH += D:\OpenCV4.5.1\opencv\opencv-build\install\include
LIBS += D:\OpenCV4.5.1\opencv\opencv-build\lib\libopencv_*.a
LIBS += -LE:\opencv_4.5.2\opencv\mingw64_build\install\x64\mingw\bin\

在main.cpp中红框位置加上如下代码

#include <QApplication>

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;

#include <QDebug>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    Mat image=imread("C:/Users/yuehe/Desktop/girlWoman.jpg",1);//一定要使用绝对路径,其他可以回报错
    namedWindow( "Display window", WINDOW_AUTOSIZE );
    imshow( "Display window", image );

    qDebug() << __LINE__ << "ahah";

    return a.exec();
}

在这里插入图片描述

=😻😻😻😻😻😻😻😻😻😻😻😻😻😻😻😻😻😻😻😻😻😻😻😻😻😻=

接下来与说我遇到的坑,不代表所有坑

坑一:MinGW编译OpenCV到vs_version.rc.obj处出错 imcompatible
原因: windows 系统环境变量中存在重名可执行程序(xxx.exe)即 windres.exe 在环境变量中存在多个,导致 CMAKE 或者 make 的时候 32 位 64 位错误调用,以及版本错误调用。所以此时建议编译库的本子一定要干净且专一,东西装多了不一定是好事,自己埋了雷都不知道。可以通过 everything 软件快速的找到。

解决方案1: cmd终端cd到core(或其他), 用 qt 的 windres.exe 对 vs_version.rc 执行如下命令(路径自己改对应的)。

E:\opencv_4.5.2\opencv\mingw_build\modules\core>E:\QT\Tools\mingw730_64\bin\windres.exe   E:\opencv_4.5.2\opencv\mingw_build\modules\core\vs_version.rc -O coff CMakeFiles\opencv_core.dir\vs_version.rc.obj
E:\opencv_4.5.2\opencv\mingw_build\modules\dnn>E:\QT\Tools\mingw730_64\bin\windres.exe   E:\opencv_4.5.2\opencv\mingw_build\modules\dnn\vs_version.rc -O coff CMakeFiles\opencv_dnn.dir\vs_version.rc.obj

注意:先cd到core的地址,上图中的Progra~1是用于替换Program,第一段是windres.exe的地址,第二段是已经存在的vs_version.rc地址,-O coff是指令,最后一段是要生产的地址及文件

解决方案2终极: 通过 everything 找到 windres.exe (xxx.exe),然后把不需要的都都加上后缀_bak,例如 windres.exe_bak 这样就能避免环境变量找到重名的错误编译程序。就能锁定到我需要的程序了。

坑二:make 遇上 undefined reference to “xxxx”

解决思路: 通过 everthing 工具找到对应的文件,如 windows.cpp 中未定义的 xxxx 视情而定,简单的直接屏蔽即可。(up主我是直接进入 wnidows.cpp 中注释掉了 undefined rerence to “xxxx” 的 xxxx 函数调用处,返回值处强行返回了一个 -1。)

坑三:opencv库编译成功,但是运行程序直接崩溃问题

解决思路: 网上大多数教程贴的代码都是这样配置 .pro 文件

INCLUDEPATH += D:\OpenCV4.5.1\opencv\opencv-build\install\include
LIBS += D:\OpenCV4.5.1\opencv\opencv-build\lib\libopencv_*.a

但是实际上是需要这样配置,至于静态

INCLUDEPATH += D:\OpenCV4.5.1\opencv\opencv-build\install\include
LIBS += D:\OpenCV4.5.1\opencv\opencv-build\lib\libopencv_*.a
LIBS += -LE:\opencv_4.5.2\opencv\mingw64_build\install\x64\mingw\bin\
  • 11
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AI_潜行者

赐予我力量吧

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

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

打赏作者

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

抵扣说明:

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

余额充值