在 QT Creator 上配置 opencv 环境的一些认识和注意点

2023-11-17

在 QT Creator 上配置 opencv 环境的一些认识和注意点

一、OpenCV4 + QT Creator + Cmake

我参考的视频是:https://www.bilibili.com/video/BV163411b7mg/?spm_id_from=333.880.my_history.page.click&vd_source=b91967c499b23106586d7aa35af46413

我使用的 Qt Creator 版本是 Qt Creator 6.0.1 (Community),Qt版本是opencv为 4.5.1 版本 。
在这里插入图片描述
按照上述链接中的步骤做,

1、环境变量
在这里插入图片描述
(需要注意要与CMake中对应),即:
在这里插入图片描述
1、设置环境变量之后要重启电脑。

2、视频中勾选WITH_QT和WITH_OPENGL,但一编译到 target opencv_dnn 就不行了,原因是不能勾选WITH_OPENGL。网上有些教程让两个都选,现在已不行了,编译不过。

CMake版本:
在这里插入图片描述
还有个问题(在Generate之前设置就行):
在这里插入图片描述
之后,基本就好了。
(注:要编译成32位的不知道行不行,因为遇到过一次编译成32位时,到100%时因为Python原因失败的。)

二、OpenCV4 + QT Creator + VS编译器,C++开发配置

参考视频链接:https://www.bilibili.com/video/BV1Za4y1v7ra?p=2&spm_id_from=333.880.my_history.page.click&vd_source=b91967c499b23106586d7aa35af46413

这里把步骤列在下面:

1、下载 opencv,这里推荐 4.5.1 版本(本例中使用的是 4.5.5 版本)

下载时要下载 .exe 文件,不要下载 .zip 文件。

在这里插入图片描述

官网下载速度过慢,推荐下载网址链接如下:
https://www.raoyunsoft.com/wordpress/index.php/2020/03/09/opencvdownload/

如何查看现有的 OpenCV 版本呢?

在这里插入图片描述
在这里插入图片描述

2、配置系统环境变量

在这里插入图片描述

3、创建 QT 项目
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
注意这里选择 MSVC 的,我这里选择 MSV2019 64 bit,
在这里插入图片描述
之后,一路 next,建立好工程。这里选择 Release,

在这里插入图片描述
然后,链接 OpenCV 库。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
之后,点击完成。然后打开 .pro 文件,会多了下面两句话,
在这里插入图片描述

第二段并没有指明具体的位置,要完善(从 build 后添加,以下面为例)。

INCLUDEPATH += D:/openCV/opencv/build/include/
DEPENDPATH += D:/openCV/opencv/build/include/opencv2/

最后,测试下工程是否能正常运行。

#include "mainwindow.h"
#include "QVBoxLayout"
#include "QLabel"
#include "QString"
#include "opencv2/opencv.hpp"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QVBoxLayout* layout = new QVBoxLayout();
    QLabel* label = new QLabel();
    std::string str = (cv::format("Hello, QT and OpenCV%d.%d", cv::getVersionMajor(), cv::getVersionMinor()));

    label->setText(QString(str.c_str()));
    layout->addWidget(label);
    ui->centralwidget->setLayout(layout);
    cv::Mat src = cv::imread("H:\\wordData\\hand\\chou.png");

    cv::namedWindow("输入图片",cv::WINDOW_FREERATIO);
    cv::imshow("输入图片", src);
    cv::waitKey(0);
    cv::destroyAllWindows();
}

MainWindow::~MainWindow()
{
    delete ui;
}

运行效果如下,

在这里插入图片描述

在这里插入图片描述

三、如何打开用到 OpenCV 库的工程文件

在得到涉及到 OpenCV 的 QT 工程时,如果您的电脑中已经使用 CMAKE 重新编译过 OpenCV 的源码并添加 QT Creator 中后,就可以直接选择通过 MinGW32/64 的方式来打开工程了。

但是由于种种原因,有很多种情况下并不能成功使用 CMAKE 来编译 OpenCV 的源码,此时就只能采用 MSVC 的方式来打开工程文件了,使用 MSVC 来创建工程有个非常不好用的地方就是中文编码的问题。

那应该怎么解决该问题呢?

这篇文章阐述了原因和解决方法,链接: https://blog.csdn.net/m_wordPlan/article/details/106397941

这里采用该解决方法。
在这里插入图片描述
在打开工程文件之前,

先将项目中 所有的头文件和源文件 全都转换成UTF-8+BOM编码保存。

在这里插入图片描述

这里以上述文件为例。

在这里插入图片描述
之后,打开工程。

在这里插入图片描述
在打开该工程文件后,就要根据前面讲解的链接 OpenCV 库,并修改 .pro 文件中的路径(因为打开的工程是别人采用 Mingw 或者 MSVC 的方式链接过了 Opencv 库,所以要将别人的删除,改成自己的)

在这里插入图片描述
修改后如下,

在这里插入图片描述
如果 build 报错,重新来过。

运行代码,会有中文的问题。于是,按照解决方法在用到中文字符的头文件和源文件开头加上 MSVC 的一个宏:

#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")
#endif

此时,运行下代码看是否成功就好了。

四、调用 OpenCV 库中函数的中文问题。

调用 OpenCV 库函数时,需要注意的是路径不能指定为中文。但是指定窗口名称是可以使用中文的。

    cv::namedWindow("输入图片",cv::WINDOW_FREERATIO);
    cv::imshow("输入图片", src);

但是为了解决在 MSVC 工程中的中文问题时,在用到中文字符的头文件和源文件开头加上 一段宏,从而就导致了调用 OpenCV 库中函数中的中文显示乱码,所以,之后在使用 OpenCV 库中函数还是使用英文比较好。

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

在 QT Creator 上配置 opencv 环境的一些认识和注意点 的相关文章

随机推荐

  • ChatGPT Prompting开发实战(五)

    一 如何编写有效的prompt 对于大语言模型来说 编写出有效的prompt能够帮助模型更好地理解用户的意图 intents 生成针对用户提问来说是有效的答案 避免用户与模型之间来来回回对话多次但是用户不能从LLM那里得到有意义的反馈 本文
  • outbound和inbound关系

    Inbound PCI域訪问存储器域 Outbound 存储器域訪问PCI域 RC訪问EP RC存储器域 gt outbound gt RC PCI域 gt EP PCI域 gt inbound gt EP存储器域 EP訪问RC EP存储器
  • python实现主成分估计

    什么是PCA 主成分分析的主要目的是希望用较少的变量去解释原来资料中的大部分变异 将我们手中许多相关性很高的变量转化成彼此相互独立或不相关的变量 通常是选出比原始变量个数少 能解释大部分资料中的变异的几个新变量 即所谓主成分 并用以解释资料
  • python编程基础知识

    python 切片 可以对list对象 如 1 2 3 4 字符串对象 1234 进行切片 使用 str l r str截取索引范围为 l r 索引值可以为负 表示从倒数方向 如 1表示倒数第一项 例 str 123456 str 0 2
  • 微信小程序开发之数据存储 参数传递 数据缓存

    微信小程序开发内测一个月 数据传递的方式很少 经常遇到页面销毁后回传参数的问题 小程序中并没有类似Android的startActivityForResult的方法 也没有类似广播这样的通讯方式 更没有类似eventbus的轮子可用 现在已
  • sql_labs18

    刚拿到题目时一点头绪没有 虽然提示是user agent注入 但没登录之前是看不到有关信息的 之后经过查看知道了两个admin就可以登录上 并且可以查看到user agent信息 判断闭合符 在User Agent字段结束添加单引号 触发报
  • esp32开发板学习

    1 esp32简介 esp32说到底就是一个小型的linux 可以执行我们的代码 尺寸只有一个苹果watch se的大小 可以集成各个物理组件 好像是通过开发板上的引脚来操作的 2 开发板部署python环境 2 1 在pdd花10块钱买了
  • 关闭文件指针不对

    浏览代码时看到下面几行代码 大家看看有啥问题 其中隐含的问题是关闭空的文件指针 所以写了一个测试代码 运行一下 挂了
  • C++模板类重载"<<"未定义错误

    在使用C 的模板类进行编程的时候 重载 lt lt 运算符时 如果定义不当 会出现未定义的情况 错误为LNK2019 这个问题的原因是由于C 的模板编译机制造成的 解决问题的方式是在类中声明 lt lt 运算符时 需要在运算符和参数之间的位
  • 【Python-利用动态二维码传输文件(五)】动态二维码文件发送端开发,使用Tkinter filedialog实现任意格式文件选中,并显示发送状态

    之前四篇文章论证了利用二维码传输文件的可行性 本章使用tkinter开发 动态二维码文件发送端 发送端具备文件选择 开始发送文件 停止发送文件以及显示发送状态的功能 程序界面下 这里下载源码运行 使用tkinter开发动态二维码文件发送端
  • 【JVM】JVM 垃圾收集器与内存分配策略

    JVM 垃圾收集器与内存分配策略 由JVM内存区域可知Java运行时内存的各个区域 其中程序计数器 虚拟机栈 本地方法栈3个区域随线程而生 随线程而灭 当方法结束或者线程结束时 内存就会跟着被回收了 而只有处于运行期间 我们才能知道程序究竟
  • 在IMX8MM平台linux下开发rm67191屏驱动

    NXP IMX8M MINI rel imx 4 14 98 2 0 0 ga 屏芯片 rm67191 屏调试记录 1 不能挂设备 设备树删除ADV7535屏的配置adv bridge 不通编译通过 结果按 https community
  • 一起来看看一个体系完善的前端React组件库是如何搭建出来的!

    作者简介 剑桥 携程资深前端开发工程师 关注自动化工具开发 前端工程自动构建相关技术 随着前端工程的发展 组件化的思想早已深入人心 现代的前端框架React Vue等 都是围绕组件设计 组件化的开发模式 大大提高了开发效率 设计和开发高质量
  • 增长率用计算机怎么算,操作方法:Excel使用公式来计算增长率教程

    有关使用公式计算增长率的Excel教程 Excel经常需要使用公式来计算增长率 如何使用公式来计算增长率 以下是有关使用公式计算增长率的excel教程 希望阅读后能为您带来启发 Excel使用公式来计算增长率教程 计算增长率步骤1 在单元格
  • A Survey on Large Language Models for Recommendation

    本文是LLM系列的文章 针对 A Survey on Large Language Models for Recommendation 的翻译 大模型用于推荐的综述 摘要 1 引言 2 建模范式和分类 3 判别式LLM用于推荐 4 生成式L
  • 关于使用Mybatis时实体类字段切记要使用包装类型

    每周的博客从5月份有开始断更了 看来坚持每周写一篇博客缺失很难 不过从这周开始 除了一方面把之前的那几周没写的博客补回来 另一方面从这周开始要真正逼自己的写一篇博客 并争取在7月份前搭建起自己的个人博客网站 好 废话少说 接下来快速进入今天
  • 线性表的顺序表示--王道2024DS习题代码

    2024年王道数据结构考研复习指导第二章 线性表的顺序表示 课后综合应用题个人学习的相关运行代码 include
  • 详解Matplotlib中文字符显示问题

    文章目录 1 中文字体显示问题 2 几种解决方案 2 1 在绘图代码中设置全局字体 2 2 在绘图代码中设置局部字体 2 3 修改本机字符默认配置字体 2 4 自动区别系统然后选择字体 3 其他 3 1 platform模块 3 2 常见中
  • Latex 乘号 分号

    Latex 乘号 分号 frac 分号 times 乘号 举例
  • 在 QT Creator 上配置 opencv 环境的一些认识和注意点

    在 QT Creator 上配置 opencv 环境的一些认识和注意点 一 OpenCV4 QT Creator Cmake 我参考的视频是 https www bilibili com video BV163411b7mg spm id