QT上位机开发(简易图像处理软件)

news2024/11/25 16:46:00

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        大家都知道图像处理非常地重要,因为它不仅仅是可以用于拍照美颜,而且在工业、医疗和军事等方面也发挥着巨大的作用。另外一点大家有所不知的是,在工业上,图像处理排名靠前的几家公司,长期都是高毛利、高利润的代名词。这一次QT开发,我们正好可以借助于opencv开源库,做一个简单的图像处理软件。

1、创建一个简单的qt widget工程

        我们需要这个工程,仅仅是引用它的一个框架。唯一需要注意的是,创建工程的时候,一定要选择64位。

2、安装opencv库

        之前一直认为windows上面opencv库都需要自己编译的,但是没想到在opencv官方网站,都是已经编译好的头文件和静态库和动态库。有了这几点,使用起来就非常方便了。这个安装包,就是编译好的压缩库,里面有头文件、lib文件和dll文件而已。

https://opencv.org/releases/

3、设置include目录

        安装了opencv之后,那么刚才创建的工程,就一定需要把opencv include目录包进来。注意选择的时候,一定是x64下面的目录,而不是x86下面的目录,这一点很容易混肴的。

4、设置静态库的链接

        除了头文件的编译之外,opencv静态库链接也是非常需要的。不然的话,代码即使编译通过了,最后也会链接不过的。所以,还要在x64环境下选择静态库的链接地址,

5、修改main.cpp代码

        main.cpp代码其实比较简单。首先注释掉原来所有代码,接着就是创建一个Mat的image,在二值化之后通过QImage转成QPixmap,最后把QPixmap贴到一个label标签上。有了前面的头文件和lib文件,这边编译应该没有什么问题了。

#include <QtWidgets/QApplication>
#include <opencv2/opencv.hpp>
#include <QImage>
#include <QPixmap>
#include <QLabel>

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

	// 读取图像
	cv::Mat originalImage = cv::imread("lena.png");

	// 将图像灰度化
	cv::Mat grayImage;
	cv::cvtColor(originalImage, grayImage, cv::COLOR_BGR2GRAY);

	// 将灰度图像进行二值化处理
	cv::Mat binaryImage;
	cv::threshold(grayImage, binaryImage, 128, 255, cv::THRESH_BINARY);

	// 将OpenCV二值化图像转换为Qt图像
	QImage qImage(binaryImage.data, binaryImage.cols, binaryImage.rows, binaryImage.step, QImage::Format_Grayscale8);
	QPixmap pixmap = QPixmap::fromImage(qImage);

	// 在Qt界面中显示二值化图像
	QLabel label;
	label.setPixmap(pixmap);
	label.show();

	return a.exec();
}

6、拷贝opencv的dll文件到可执行文件目录

        生成的exe既依赖于qt,也依赖于opencv。那么依赖于opencv的这部分呢,可以直接把对应的dll文件copy到生成的exe目录下,qt这部分可以通过直接vs2017 debug调试启动的方式来解决。

7、寻找vcruntime140_1d.dll

        实际运行的时候,系统还会提示我们,当前没有vcruntime140_1d.dll这个文件。关于这个文件,应该是opencv编译的时候涉及到的,可以通过下面这个网站进行查找,拷贝到exe目录下即可,

https://cn.dll-files.com/vcruntime140_1d.dll.html

8、下载测试图片lena.png

        所有程序都准备好了,那么下面需要的就是测试图片。这部分呢,我们可以去寻找最经典的测试图片lena.png,比如可以从如下这个地址进行考虑。当然,图片记得一定放在h文件、cpp文件同级目录下。

https://github.com/mikolalysenko/lena/blob/master/lena.png

9、开始测试

        程序、动态库、图片都准备好之后,就可以测试了。这个时候,我们在vs2017下面启动调试程序,不出意外的话,就可以看到一张灰化的二值化图片。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1354856.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

聊聊分布式会话及实现方案

鲁大猿&#xff0c;寻找精品资料&#xff0c;帮你构建Java全栈知识体系 http://www.jiagoujishu.cn 基础概念 Session Cookie 会话方案比较简单&#xff0c;这里我在网上找了点资料&#xff0c;再回顾下基础吧。 为什么要产生Session http协议本身是无状态的&#xff0c;客户…

印刷企业如何快速上线MES管理系统解决方案

随着科技的不断发展&#xff0c;印刷行业正面临着前所未有的挑战与机遇。为了提高生产效率、降低成本、提升企业竞争力&#xff0c;许多印刷企业开始引入MES管理系统解决方案。然而&#xff0c;对于很多企业来说&#xff0c;如何快速、有效地上线MES管理系统却是一个难题。本文…

有哪些有用的工作技巧?

有效沟通免去麻烦 说起职场的工作技巧&#xff0c;首先不得不提的便是有效沟通。高效的职场沟通不仅能显著提高工作效率&#xff0c;通过清晰准确地传递信息&#xff0c;减少误解和错误&#xff0c;还能促进团队间的紧密合作&#xff0c;建立起相互信任和理解的环境。在面临挑…

C语言KR圣经笔记 5.6指针数组;指针的指针

5.6 指针数组&#xff1b;指针的指针 因为指针本身也是变量&#xff0c;所以它们也能像其他变量一样保存在数组里面。我们写个程序来说明&#xff0c;该程序将一些文本行按照字母顺序排列&#xff0c;算是 UNIX 程序 sort 的精简版本。 在第三章中&#xff0c;我们介绍了对一…

docker的安装的详细教程,以及出现错的解决办法(阿里云)

docker的安装与使用 1.安装dnf sudo yum -y install dnf Repository extras is listed more than once in the configuration 错误&#xff1a;无法为仓库 appstream 找到一个有效的 baseurl 出现这个错误这是由于阿里云的版本导致的 在阿里云开发者社区有答案&#xff01…

SparkCore基础解析(二)

1、 RDD概述 1.1 什么是RDD RDD&#xff08;Resilient Distributed Dataset&#xff09;叫做分布式数据集&#xff0c;是Spark中最基本的数据抽象。代码中是一个抽象类&#xff0c;它代表一个不可变、可分区、里面的元素可并行计算的集合。 1.2 RDD的属性 1)一组分区&#x…

Atlas 2.2.0 安装部署

Apache Atlas 是一套可扩展、可延伸的核心基础治理服务&#xff0c;使企业能够切实有效地满足 Hadoop 中的合规性要求&#xff0c;并允许与整个企业数据生态系统集成。 Apache Atlas 提供开放的元数据管理和治理功能&#xff0c;使企业能够建立数据资产目录&#xff0c;对这些…

C#利用openvino部署PP-TinyPose人体姿态识别

【官方框架地址】 github.com/PaddlePaddle/PaddleDetection 【算法介绍】 关键点检测算法往往需要部署在轻量化、边缘端设备上&#xff0c;因此长期以来都存在一个难题&#xff1a;精度高、速度则慢、算法体积也随之增加。而PP-TinyPose的出世彻底打破了这个僵局&#xff0c…

unity学习笔记----游戏练习04

一、开发阳光生产功能 向日葵的生产过程需要动画和时间 1.生产动画 选中Sunflower&#xff0c;然后选中窗口再选中 创建新的剪辑开始制作动画&#xff0c;向日葵生产动画的过程是一个从暗到亮然后持续一段时间再到暗的过程。因此只需要在对应的时间改变颜色即可。 为了保证是…

【C语言进阶篇】 数组常考笔试题万字解析(下)

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 &#x1f4cb; 前言&#x1f4ac; 数组笔试题解析&#x1f4ad; 字符数组笔试题✅ 字符数组笔试题解析 &#x1…

python股票分析挖掘预测技术指标知识之均线指标详解(6)

本人股市多年的老韭菜&#xff0c;各种股票分析书籍&#xff0c;技术指标书籍阅历无数&#xff0c;萌发想法&#xff0c;何不自己开发个股票预测分析软件&#xff0c;选择python因为够强大&#xff0c;它提供了很多高效便捷的数据分析工具包。 我们已经初步的接触与学习其中数…

java SSM图片管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM图片管理系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和 数据库&#xff0c;系统主要采用B/…

三、C语言中的分支与循环—switch语句(4)分支结构 完

本章分支结构的学习内容如下&#xff1a; 三、C语言中的分支与循环—if语句 (1) 三、C语言中的分支与循环—关系操作符 (2) 三、C语言中的分支与循环—条件操作符 与逻辑操作符(3) 三、C语言中的分支与循环—switch语句&#xff08;4&#xff09;分支结构 完 本章循环结构的…

2024年我国网络安全发展形势展望

2023年&#xff0c;我国网络安全政策法规陆续出台&#xff0c;网络安全与数据安全产业发展势头强劲&#xff0c;网络安全形势整体向好。展望2024年&#xff0c;世界各国在网络空间中的竞争将变得愈发激烈&#xff0c;我国网络安全领域的法律法规将不断完善&#xff0c;数据安全…

【PTA-C语言】编程练习5 - 函数与指针

如果代码存在问题&#xff0c;麻烦大家指正 ~ ~有帮助麻烦点个赞 ~ ~ 编程练习5 - 函数与指针 6-1 求实数和的函数&#xff08;分数 10&#xff09;6-2 求解一元二次方程实根的函数&#xff08;分数 10&#xff09;6-3 求集合数据的均方差&#xff08;分数 10&#xff09;6-4 计…

.cer格式证书文件和 .pfx格式证书文件有什么区别?

这里我们将讨论.cer和.pfx文件类型之间的差异。 什么是数字证书&#xff1f; 数字证书在电子通信中用作验证身份的密码机制。我们需要这些证书来建立安全的在线通信渠道&#xff0c;并确保数字数据的隐私、真实性和正确性。 数字证书包括主题&#xff08;实体详细信息&#xf…

智能型参数可设置比例阀放大器

智能型参数可设置比例阀放大器是一种电液控制技术&#xff0c;它可以驱动不带电气位移反馈的各种比例溢流阀、比例流量阀、比例减压阀、比例方向阀和比例插装阀等。 这种放大器的特点是可以将输入的模拟量指令信号进行处理运算&#xff0c;通过比例电磁铁将驱动电流线性转换为作…

Win10电脑关闭OneDrive自动同步的方法

在Win10电脑操作过程中&#xff0c;用户想要关闭OneDrive的自动同步功能&#xff0c;但不知道具体要怎么操作&#xff1f;首先用户需要打开OneDrive&#xff0c;然后点击关闭默认情况下将文档保存到OneDrive选项保存&#xff0c;最后关闭在这台电脑上同步设置保存就好了。接下来…

使用IDEA创建使用 JDK8 的 2.x.x 版本的 Spring Boot 项目以及 Spring Boot 项目如何修改JDK版本

目录 一、在阿里云上官网上创建项目 二、将 IDEA 中创建项目的源地址修改为阿里云官网 三、创建 3.x.x 的项目之后修改配置降低至 2.7.x 版本和使用 JDK8&#xff08;修改 Spring Boot 的 JDK 版本同理&#xff09; 从上面的 Spring Boot 官网的截图中可以发现&#xff0c;自…

[C#]使用纯opencvsharp部署yolov8-onnx图像分类模型

【官方框架地址】 https://github.com/ultralytics/ultralytics.git 【算法介绍】 YOLOv8 是一个 SOTA 模型&#xff0c;它建立在以前 YOLO 版本的成功基础上&#xff0c;并引入了新的功能和改进&#xff0c;以进一步提升性能和灵活性。具体创新包括一个新的骨干网络、一个新…