QT5.12.3+OPENCV4.2.0配置,MINGW编译与库文件调用

2023-10-30

目录

1.QT5.12.3+OPENCV4.2.0

2.准备工作

3.安装步骤

3.1.QT

3.2.CMAKE  

3.3.OPENCV

4.使用MINGW编译OPENCV

5.QT调用库文件

6.QT测试OPENCV


1.QT5.12.3+OPENCV4.2.0

2.准备工作

3.安装步骤

3.1.QT

  1.  Welcome to the Qt installer: next

  2.  Qt Account - your unified login to everything Qt: skip

  3.  Setup-Qt: next

  4.  installation folder: $$ProgramFiles/Qt5.12.3

  5.  select components: Qt-Qt5.12.3-MingGW 64 bit

  6.  select components: Qt-Tools-MinGW 64 bit

  7.  License Agreement: agree and next

  8.  start menu shortcuts: next

  9.  ready to install: install

3.2.CMAKE  

  1.  Welcome to the CMake Setup Wizzard: next

  2.  End-User License Agreement: [V] Accept and next

  3.  Install options: [V] Add CMake to the system PATH for all users, next

  4.  Destination folder: $$ProgramFiles/CMake, next

  5.  Ready to install CMake, Install

3.3.OPENCV

opencv需要选择release版本下载,直接clone可能在make的时候出错,这里下载最新的4.2.0版本,然后解压到没有中文路径的目录下,本教程假设解压到目录 $$opencv-4.2.0\ 下

4.使用MINGW编译OPENCV

mingw 来自 qt,添加其到系统环境变量

$$ProgramFiles\Qt\5.12.3\mingw73_64\bin

在 $$opencv-4.2.0 附近或子目录建立编译 opencv 的 output 文件夹:

mkdir cv_build

打开CMake,选中 opencv 的源码和 output 目录,然后 configure

在弹出的对话框中如下配置,调用 qt 的 mingw

configure 期间会下载 dll 文件,由于网络原因会出现下载失败,但不影响

第一次 config 完成后:

  • 勾上 WITH_QT
  • 勾上 WITH_OPENGL
  • 取消 ENABLE_PRECOMPILED_HEADERS
  • 取消 WITH_IPP

然后再次 config,这次 config 可能会报错

选择正确的 qt-cmake 文件路径 QT5_DIR --> $$ProgramFiles/Qt5/5.12.3/mingw73_64/lib/cmake/Qt5

其他几个文件路径也在这个目录下,一直 config 和配置参数,直到红色消失,参数配置如下

configure 完成后,执行 generate,然后在 cv_build 目录下运行Windows PowerShell终端,在终端下执行

mingw32-make -j 8

使用8个cpu核心编译 opencv 源码

其他版本可能出现的问题:

If, in the file opencv/sources/modules/videoio/src/cap_dshow.cpp, you have the following error : 'sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA' was not declared in this scope ...

try this: put the following line: #define NO_DSHOW_STRSAFE, before the line : #include "DShow.h"

If you have the error: ‘nullptr’ was not declared in this scope..

try this: in cmake check the box ENABLE_CXX11

If, in the file modules\videoio\src\cap_msmf.cpp you have the error: using invalid field '{anonymous}::ComPtr<T>::p'..

try this: in cmake unchecking WITH_MSMF

If,Building RC object modules/core/CMakeFiles/opencv_core.dir/vs_version.rc.obj v:\MinGW-Builds\mingw64\bin\windres.exe: unknown option -- W

try this: change the source code to release version

编译完成:

make install:

3e990947d80a6b4447d5411f6b49bf3d.png

install done:

install 完成后,在 cv_build 目录下自动生成了一个 install 文件夹,该文件夹内包含了 h文件、lib、dll文件

建立文件夹,用于其他工程调用:

 
  1. # 新建一个文件夹,用于其他工程调用:

  2. mkdir opencv420

  3. cd opencv420

建立文件目录如下

 
  1. opencv420/:

  2. +---bin

  3. +---include

  4. |   \---opencv2

  5. |       +---calib3d

  6. |       +---core

  7. |       +---dnn

  8. |       +---features2d

  9. |       +---flann

  10. |       +---gapi

  11. |       +---highgui

  12. |       +---imgcodecs

  13. |       +---imgproc

  14. |       +---ml

  15. |       +---objdetect

  16. |       +---photo

  17. |       +---stitching

  18. |       +---video

  19. |       \---videoio

  20. \---lib

其中:

  • include 目录拷贝自 cv_build/install/include
  • bin 目录拷贝自 cv_build/install/x64/mingw/bin
  • lib 目录拷贝自 cv_build/install/x64/mingw/lib

到现在为止,opencv420 目录包含了 mingw 编译的库文件,接口的头文件,可用于其他 mingw-based 项目调用

5.QT调用库文件

拷贝 opencv420 到项目内 pro 文件的同目录,在 opencv420 目录内建立文件 opencv420.pri,内容如下:

 
  1. DEFINES += OPENCV4_DLL

  2. INCLUDEPATH += $$PWD/include

  3. LIBS += -L$$PWD/bin -llibopencv_calib3d420

  4. LIBS += -L$$PWD/bin -llibopencv_core420

  5. LIBS += -L$$PWD/bin -llibopencv_dnn420

  6. LIBS += -L$$PWD/bin -llibopencv_features2d420

  7. LIBS += -L$$PWD/bin -llibopencv_flann420

  8. LIBS += -L$$PWD/bin -llibopencv_gapi420

  9. LIBS += -L$$PWD/bin -llibopencv_highgui420

  10. LIBS += -L$$PWD/bin -llibopencv_imgcodecs420

  11. LIBS += -L$$PWD/bin -llibopencv_imgproc420

  12. LIBS += -L$$PWD/bin -llibopencv_ml420

  13. LIBS += -L$$PWD/bin -llibopencv_objdetect420

  14. LIBS += -L$$PWD/bin -llibopencv_photo420

  15. LIBS += -L$$PWD/bin -llibopencv_stitching420

  16. LIBS += -L$$PWD/bin -llibopencv_video420

  17. LIBS += -L$$PWD/bin -llibopencv_videoio420

  • 定义宏,使用 opencv4 动态库
  • 添加头文件路径为 pri 文件路径下 include 路径
  • 添加库文件,-L 添加库文件的路径为 pri 文件路径下的 bin 路径,-l 添加该路径下的动态库文件

6.QT测试OPENCV

修改 pro 文件,增加该行

include($$PWD/opencv420/opencv420.pri)

修改 main.cpp

 
  1. #include "mainwindow.h"

  2. //#include <QApplication>

  3. #include <opencv2/core/core.hpp>

  4. #include <opencv2/highgui/highgui.hpp>

  5. int main(int argc, char *argv[])

  6. {

  7. //    QApplication a(argc, argv);

  8. //    MainWindow w;

  9. //    w.show();

  10.     cv::Mat img_src = cv::imread("W:\\Images\\TestImages\\1.jpg", 1);

  11.     cv::namedWindow("Image Shower");

  12.     cv::imshow("Image Shower", img_src);

  13.     cv::waitKey(0);

  14. //    return a.exec();

  15.     return 0;

  16. }

构建运行:

除了拷贝库文件然后添加LIBS路径的方法外,还可以将dll文件的路径添加到系统环境变量中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QT5.12.3+OPENCV4.2.0配置,MINGW编译与库文件调用 的相关文章

  • 当 QML 对象不可见时防止 QML 属性绑定?

    我正在开发一个具有大量属性绑定的 QML 应用程序 数百个对象被跟踪并以不同的形式显示 例如 Qt3D QCanvas 当我在应用程序的单独页面上时 x y 位置和相对大小的属性绑定仍在发生 我怎样才能阻止他们 我知道我可以根据属性是否可视
  • QSpinBox 输入 NaN 作为有效值

    我正在尝试扩展 QSpinBox 以能够输入 NaN 或 nan 作为有效值 根据文档 我应该使用 textFromValue valueFromText 和 validate 函数来完成此操作 但我无法让它工作 因为它仍然不允许我输入除数
  • 如何在 C++ 运行时更改 QML 对象的属性?

    我想在运行时更改 QML 对象的文本 我尝试如下 但文本仍然为空 这是后端类 class BackEnd public QObject Q OBJECT Q PROPERTY QString userFieldText READ userF
  • GoQt 致命错误:QAbstractAnimation:没有这样的文件或目录

    我尝试编译 Qt 来开发桌面应用程序 我按照 Qt 网站上的官方 wiki 指南的说明进行操作 当我尝试go run示例文件夹中的示例 我收到错误 去运行 home pinkya rabbit workspace go1programs s
  • QTcpSocket 有时不发送数据

    我有两个 QT 应用程序 一个应用程序可以被认为保存了大数据 它每秒向第二个应用程序发送大约 10 KB 的数据块 之前我尝试使用QUdpSocket来传输数据 但由于MTU限制在2 5K左右 并且需要自己分割和重新组合数据 所以我改用QT
  • PyQt:如何设置组合框项目可检查?

    为了将 GUI 小部件数量保持在最低限度 我需要找到一种方法来为用户提供下拉菜单项的选择 这些菜单项可用于过滤掉 listWidget 项中显示的内容 假设 listWidget 列出了 5 个不同类别的项目 Cat A Cat B Cat
  • 如何在带有预编译头的项目中使用google protobuf

    我有一个包含多个项目的解决方案 我的项目 但不是全部 使用预编译头 我决定使用 protobuf 但遇到了一个问题 在 protoc exe 从 proto 生成 pb h 后 我尝试包含标头并收到错误 预编译标头未包含在 pb h 中 我
  • 如何创建用于 QML 的通用对象模型?

    我想知道是否有任何宏或方法如何将 Qt 模型注册为 QObject 的属性 例如 我有AnimalModel http doc qt io qt 5 qtquick modelviewsdata cppmodels html qabstra
  • 为 Windows 98 编译 Qt

    我需要支持 Windows 98 Qt 文档声称这是可能的 但没有说明 Qt 4 6 的分布式二进制文件不能在 Win98 上运行 而且我采样的大多数 Qt 应用程序也不能在 Win98 上运行 对于几个确实在 98 上运行的应用程序 我询
  • QCombobox 向下箭头图像

    如何更改Qcombobox向下箭头图像 现在我正在使用这个 QSS 代码 但这不起作用 我无法删除向下箭头边框 QComboBox border 0px QComboBox down arrow border 0px background
  • QTimer 一点也不准确?

    运行在 Windows7 64 位机器上 具有非常强大的 CPU 8 核 16 线程 我使用 QTimer 以 50Hz 触发函数调用 但我最终得到了 30Hz 函数调用本身肯定需要不到 10 毫秒才能完成 整个过程发生在一个单独的线程中
  • Qt 插槽是否与其他代码并行运行?

    在此函数示例中 void MyClass myFunction emit MySignal1 emit MySignal2 如果我有slot1倾听MySignal1 and slot2倾听MySignal2 1 Is slot1总是会在之前
  • Qt 5.6 测试版 Visual Studio 2015

    我已经安装了这个 http download qt io development releases qt 5 6 5 6 0 beta qt opensource windows x86 msvc2015 5 6 0 beta exe mi
  • Qt - 无法让 lambda 工作[重复]

    这个问题在这里已经有答案了 我有以下功能 我想在其中修剪我的std set
  • 从 Qt4 中的文本文件中逐字读取

    我想在 Qt4 中逐字读取一个文本文件 说实话我对它很陌生 我想在另一个文件中每行一个字写入 我可以在 C 中做到这一点 没有任何问题 但是当我尝试在 Qt4 中使用 ifstream 和 ofstream 时 我遇到了错误 这是我的 Qt
  • 在高 dpi Windows 平台上自动重新缩放应用程序?

    我正在编写一个需要在高 dpi Windows 192dpi 而不是 96dpi 上运行的 Qt 应用程序 不幸的是 Qt 框架尚不支持高 dpi 至少在 Windows 上 因此我的应用程序及其所有元素看起来只有应有尺寸的一半 有没有办法
  • 如何将 zlib 添加到现有的 qt 安装中

    如何将 zlib 添加到 Qt 的现有安装中 我对此很陌生 所以请给我详细的描述 提前感谢您的帮助 zlib 包含在 Qt 核心库中 如果你想在 Qt 程序中使用 zlib 函数 你只需要包含 src 3rdparty zlib 中的 zl
  • 如何向同一个 QMenu 添加多个 QAction?

    我正在尝试实现 Qt 菜单自定义 并且我提供了一个功能来添加相同的功能QAction在同一个人民币上下文菜单中多次 但是当我尝试这样做时 myMenu gt addAction myAction myMenu gt addAction my
  • 静态变量中的 qt tr()

    我在 qt 中的翻译方面遇到问题 我的项目中的所有翻译都工作正常 但有一个翻译位于类的静态变量中 相应部分代码如下 头文件类似于这样 typedef struct int type QString problematicString inf
  • 如何访问Loader的sourceComponent中的QML对象?

    我可能需要读取或写入的一些属性Loader s sourceComponent来自一些外部函数 访问该房产的方式是什么x里面的对象的Loader s sourceComponent import QtQuick 2 0 Item width

随机推荐

  • 期货中的正向交易与反向交易

    期货中的正向交易和反向交易 两者之间有什么样的共同点又存在什么样的差异 本文转发自公众号 反跟单交易 转载需注明出处 首先有一点值得认同 两者都属于交易 大家都抱有同样的赢利目的 就好像我们要去北京一样 虽然大家的出发点不同 乘坐的交通工具
  • Word处理控件Aspose.Words功能演示:在 Python 中将 Word DOCX 或 DOC 转换为 PDF

    Word 到PDF是最流行和执行最广泛的文档转换之一 DOCX或DOC文件在打印或共享之前会转换为 PDF 格式 在本文中 我们将在 Python 中自动将 Word 转换为 PDF 步骤和代码示例将演示如何使用 Python 将 Word
  • 公司自建机房IDC还是选择云服务器?以腾讯云为例

    大企业是选择自购服务器自建机房还是使用腾讯云服务器 都说企业上云是趋势 自建机房是一次性支出 上云租赁云服务器等产品需要年年续费 大型企业有必要把数据中心迁移上云吗 腾讯云服务器网想说 自建机房购买服务器等硬件并不是一次性支出 后续人工成本
  • 如何确定一个期刊是不是EI?

    去爱思唯尔官网下载最新的目录 网址 https www elsevier com solutions engineering village content compendex 打开EXCEL查看 SERIALS就是罗列出的所有的EI期刊和
  • 应急响应基础(三)——Windows日志分析

    Windows日志分析 一 Windows事件日志简介 1 Windows事件日志 Windows系统日志是记录系统中硬件 软件和系统问题的信息 同时还可以监视系统中发生的事件 用户可以通过它来检查错误发生的原因 或者寻找受到攻击时攻击者留
  • 拒绝“割韭菜”— 谈谈区块链正经的商用场景!

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 作者 林喜东 腾讯云高级工程师 最近区块链有多火 已经无需过多阐述 无论你是主动了解 还是被比特币 加密猫 3点钟无眠区块链等刷屏 相信区块链概念已经在多数人心中萌芽 但区块链这么火
  • ndvi计算公式_NDVI时间序列分析原理与实现(CV和Sen+MK趋势分析)

    NDVI时间序列分析原理与实现 CV和Sen MK趋势分析 总结两种常用的NDVI时间序列栅格分析方法 变异系数和Sen MK趋势分析 简单介绍原理和实现代码 实验数据均为年际变化数据 在CV中使用的是多波段ENVI数据 Sen MK趋势分
  • 《从Paxos到ZooKeeper》读书笔记之第一章(一)

    从Paxos到ZooKeeper 读书笔记之第一章 一 开始读 从Paxos到ZooKeeper 这本书 以了解和使用ZooKeeper 这里会记录一些随笔画下来的自以为的重点 自己理解和代码块 第一章 分布式结构 1 1 从集中式到分布式
  • springboot 启动后,调用接口时报错404问题汇总(层层推进、超全面)

    确保项目启动成功 看到这条日志才能判定项目是启动成功的 确保controller类被成功注册到了springboot容器中 首先 按springboot的类扫描规则来说 启动类和被扫描的组件类应该要在同一包下的 验证策略 从springbo
  • 联调QuartersII + ModelSim(下载安装)

    目录 1 ModelSim安装 1 之前埋得坑 2 如果额外装完整版的ModelSim 我还是推荐按照这个博客的步骤就好 安装文件我已经在上一篇博客一起给大家了 3 存在的问题 一定要管理员模式使用软件 2 联调QuartersII Mod
  • Mysql(数据库基础篇)

    棒棒有言 也许我一直照着别人的方向飞 可是这次 我想要用我的方式飞翔一次 人生 既要淡 又要有味 凡事不必太在意 一切随缘 缘深多聚聚 缘浅随它去 凡事看淡点看开些 顺其自然 无意于得 就无所谓失 人生 看轻看淡多少 痛苦就远离你多少 本章
  • MATLAB&机器学习进阶

    本文借鉴了数学建模清风老师的课件与思路 可以点击查看链接查看清风老师视频讲解 清风数学建模 https www bilibili com video BV1DW411s7wi 目录 一 K最近邻 KNN 二 决策树 三 支持向量机 四 集成
  • 喜欢就争取,得到就珍惜,错过就忘记—dbGet(二)

    通过前面一篇对dbGet基本用法的介绍 大家应该对它有一定了解了吧 那接来下 我们就要学习一下进阶的dbGet用法了 dbGet是由它基本的语法加上各种object的attribute的组合构成的 大家在熟悉基本语法之后 就应该去学习各个o
  • OpenThread is an Open Source Implementation of Thread IoT Networking Protocol

    本文转载至 http www cnx software com 2016 05 12 openthread is an open source implementation of thread iot networking protocol
  • zabbix邮件报警配置

    前言 Zabbix监控服务端 客户端都已经部署完成 被监控主机已经添加 Zabiix监控运行正常 在Zabbix服务端设置邮件报警 当被监控主机宕机或者达到触发器预设值时 会自动发送报警邮件到指定邮箱 邮件服务可以使用系统自带的邮件服务来发
  • linuxrpm命令卸载python_Linux RPM包安装、卸载、升级命令讲解

    一个 RPM 包包含了已压缩的软件文件集以及该软件的内容信息 通常表现为以 rpm 扩展名结尾的文件 例如 samba rpm 如果需要对RPM包进行操作则需要使用rpm命令 一 RPM包的来源 所有RPM包都在系统光盘的Packages目
  • coco数据集80个分类是哪些_目标分类定位,实时速度检测...目标检测5大挑战与解决方案...

    图像分类是指计算机根据图像内容对图像进行分类或分配标签 通常只需利用预先训练好的神经网络 对最后几个吞吐量层进行微调 然后就可以看到很好的结果 然而 仅在几年前 对图像中的单个目标进行分类和查找未知数量是极其困难的 现在 这项被称为目标检测
  • HTML 标签

    定义和用法 声明必须是 HTML 文档的第一行 位于 标签之前 声明不是 HTML 标签 它是指示 web 浏览器关于页面使用哪个 HTML 版本进行编写的指令 在 HTML 4 01 中 声明引用 DTD 因为 HTML 4 01 基于
  • uinapp和php实现RSA + AES 双向通信加密

    使用场景 如果只是为了防止用户数据泄露 有条件用https 那不要犹豫 赶快买个证书 但是https也有局限性 加密层位于http层 应用层 和tcp层 传输层 之间 所以抓到的http层的数据并没有加密 单独加密的弊端 单独用RSA非对称
  • QT5.12.3+OPENCV4.2.0配置,MINGW编译与库文件调用

    目录 1 QT5 12 3 OPENCV4 2 0 2 准备工作 3 安装步骤 3 1 QT 3 2 CMAKE 3 3 OPENCV 4 使用MINGW编译OPENCV 5 QT调用库文件 6 QT测试OPENCV 1 QT5 12 3