当前位置: 首页 > news >正文

上位机图像处理和嵌入式模块部署(qt图像处理)

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

        很多人一想到图像处理,本能的第一反应就是opencv,这也没有错。但是呢,这里面还是有一个问题的,不知道大家有没有想过,如果我们为了降低成本,需要把图像放到mcu来处理,这个时候应该怎么做呢?都知道,mcu的ram和flash都是有限的,根本无法容纳那么大的opencv库。所以,这边还是建议大家,opencv是可以用,但是基础的算法库最好还是可以自己写出来。

        对于写算法的人来说,最麻烦的事情,莫过于图片的读取和保存了,算法本身一般并不是那么复杂。所以这部分好在qt已经帮我们做了一部分,我们直接拿QImage类就可以实现基础的算法编写了。

1、相关类

        qt里面的QImage十分方便,输入路径,就是实现图片的保存和加载。

2、参考代码

        如下面代码所示,这就是一个简单的图像处理代码,将原来的彩色图片,变成了灰色图片。整个应用没有界面,就是一个单纯的应用。所有的操作都放在了processImage函数里面。

#include <QImage>
#include <QDebug>void processImage(QString inputPath, QString outputPath) 
{// load imageQImage inputImage(inputPath);if (inputImage.isNull()) {qDebug() << "Failed to load image";return;}// get image inforint width = inputImage.width();int height = inputImage.height();// loop to process pixelfor (int y = 0; y < height; ++y) {for (int x = 0; x < width; ++x) {QRgb pixel = inputImage.pixel(x, y);// get dataint red = qRed(pixel);int green = qGreen(pixel);int blue = qBlue(pixel);// get grayint gray = qGray(red, green, blue);// set grayinputImage.setPixel(x, y, qRgb(gray, gray, gray));}}// save dataif (!inputImage.save(outputPath)) {qDebug() << "Failed to save processed image";}
}int main() 
{// set input and output pathQString inputPath = "D:/lena.png";QString outputPath = "D:/lena_new.png";// process imageprocessImage(inputPath, outputPath);return 0;
}

        代码中因为还涉及到调试的部分,所以除了QImage之外,还需要把QDebug头文件包括进来。首先用QImage导入路径,判断是否为空,不为空则继续处理。接着获取图片的宽度和高度,依次获取图片的每个像素QRgb。读取到r、g、b之后,就可以通过qGray计算出对应的灰度值gray,这样最基本的算法就写好了。计算出来的gray通过setPixel保存在inputImage当中,并且在所有操作都完成之后,save到新的路径下面,这样图像处理就算是ok了。

3、实验和总结

        记得读书的时候,有一门《数字图像处理》的课程。老师们为了方便同学们快速学习算法,很多图片的加载和读取工作,老师们会自己写一个动态库帮忙完成。现在有了QImage之后,无疑是更方便了。对于基础的算法,大家还是最好自己可以写出来、调试出来。

        对于这个应用,大家先看一下能不能编译出来。编译出来之后,还要准备一张lena.png的图片,可以从这个地方下载,

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

        接着启动应用,开始单步调试,如果没啥问题,应该就可以在D盘看到生成的新图片,打开看一下,如果发现是灰度图,那基本代表没有什么问题了。

相关文章:

上位机图像处理和嵌入式模块部署(qt图像处理)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 很多人一想到图像处理&#xff0c;本能的第一反应就是opencv&#xff0c;这也没有错。但是呢&#xff0c;这里面还是有一个问题的&#xff0c;不知…...

AI教我学编程之C#类的实例化与访问修饰符

前言 在这篇文章中&#xff0c;我将带大家深入了解C#编程语言的核心概念&#xff0c;包括类的实例化、访问修饰符的应用&#xff0c;以及C#中不同数据类型的默认值。我会通过逐步分析和具体实例&#xff0c;详细解释如何在C#中正确创建和操作对象&#xff0c;并探讨如何通过访…...

【笔记】Blender4.0建模入门-3物体的基本操作

Blender入门 ——邵发 3.1 物体的移动 演示&#xff1a; 1、选中一个物体 2、选中移动工具 3、移动 - 沿坐标轴移动 - 在坐标平面内移动 - 自由移动&#xff08;不好控制&#xff09; 选中物体&#xff1a;右上的大纲窗口&#xff0c;点击物体名称&#xff0c;物体的轮…...

一文详解 Berachain 测试网:全面介绍与教程,bitget wallet教程

什么是Berachain&#xff1f; Berachain&#xff08;web3.bitget.com/zh-CN/assets/berachain-wallet&#xff09;是一种尖端区块链技术&#xff0c;使用 Cosmos SDK 构建的 Layer-1&#xff0c;兼容以太坊虚拟机&#xff08;EVM&#xff09;。它基于一种独特的概念&#xff0c…...

小程序使用echarts图表-雷达图

本文介绍下小程序中如何使用echarts 如果是通过npm安装&#xff0c;这样是全部安装的&#xff0c;体积有点大 我这边是使用echarts中的一个组件来实现的&#xff0c;下边是具体流程&#xff0c;实际效果是没有外边的红色边框的&#xff0c;加红色边框的效果是这篇说明 1.echa…...

MacM1Pro Parallels19.1.0 CentOS7.9 Install PostgrepSQL

相关阅读 MacM1Pro安装 Parallels Desktop 19.1.0 https://blog.csdn.net/qq_41594280/article/details/135420241 MacM1Pro Parallels安装Parallels Tools https://blog.csdn.net/qq_41594280/article/details/135398780 MacM1Pro Parallels安装CentOS7.9 https://blog.csdn.n…...

Golang 中如何实现 Set

在Go编程中&#xff0c;数据结构的选择对解决问题至关重要。本文将探讨如何在 GO 中实现 set 和 bitset 两种数据结构&#xff0c;以及它们在Go中的应用场景。 Go 的数据结构 Go 内置的数据结构并不多。工作中&#xff0c;我们最常用的两种数据结构分别是 slice 和 map&#…...

记录一下uniapp 集成腾讯im特别卡(已解决)

uniapp的项目运行在微信小程序 , 安卓 , ios手机三端 , 之前这个项目集成过im,不过版本太老了,0.x的版本, 现在需要添加客服功能,所以就升级了 由于是二开 , 也为了方便 , 沿用之前的webview嵌套腾讯IM的方案 , 选用uniapp集成ui ,升级之后所有安卓用户反馈点击进去特别卡,几…...

React16源码: React中的updateHostRoot的源码实现

HostRoot 的更新 1 &#xff09;概述 HostRoot 是一个比较特殊的节点, 因为在一个react应用当中它只会有一个 HostRoot, 它对应的 Fiber 对象是我们的 RootFiber 对象重点在于它的更新过程 2 &#xff09;源码 定位到 packages/react-reconciler/src/ReactFiberBeginWork.js…...

Template -- React

React 版本 Node 21.6.0Npm 10.2.4 项目 创建 npm init vite 项目名称reactjsnpm inpm run dev 依赖 npm i axios # 网络 npm i antd --save # UI npm i ant-design/icons npm i react-router-dom # 路由npm i sass -D # …...

HTML 入门手册(一)

目录 HTML 1-基础语法 单标签 双标签 整体结构 2-标题和水平线 标题 水平线 3-段落和换行 段落 换行 4-列表 无序列表 有序列表 嵌套列表 5-div和span div span 6-格式化标签 粗体 斜体 下划线中划线 上标和下标 7-超链接(a标签) 链接到URL 链接到本…...

GPT帮我快速解决工作上的问题案例

Python入门容易&#xff0c;但精通不易。自从跟着郭老师学Python后&#xff0c;工作中也想偷点懒&#xff0c;之前排班表的问题一直困扰着我&#xff0c;福音来了&#xff0c;现在随着郭老师的小蜜蜂AI出来&#xff0c;说干就干。马上来到郭老师为我们提供的AI网站&#xff1a;…...

Day32- 贪心算法part06

一、单调递增的数字 题目一&#xff1a;738. 单调递增的数字 738. 单调递增的数字 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数字呈 单调递…...

.NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接

Flurl.Http-3.2.4 升级到 4.0.0 版本后&#xff0c;https请求异常&#xff1a;Call failed. The SSL connection could not be established. 如下图&#xff1a; Flurl.Http-3.2.4版本绕过https的代码&#xff0c;对于 Flurl.Http-4.0.0 版本来说方法不再适用&#xff0c;3.2.…...

【每周AI简讯】GPT-5将有指数级提升,GPT Store正式上线

AI7 - Chat中文版最强人工智能 OpenAI的CEO奥特曼表示GPT-5将有指数级提升 GPT奥特曼参加Y-Combinator W24启动会上表示&#xff0c;我们已经非常接近AGI。GPT-5将具有更好的推理能力、更高的准确性和视频支持。 GPT Store正式上线 OpenAI正式推出GPT store&#xff0c;目前…...

QT上位机开发(MFC vs QT)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 在qt之前,上位机开发的主要方法就是mfc。后来出现了c#语言之后,上位机的开发就有一部分人转成了c#。这些开发都是在windows平台完成的,而linux上面的界面,则都是通过各种小众库…...

线性代数:矩阵的定义

目录 一、定义 二、方阵 三、对角阵 四、单位阵 五、数量阵 六、行&#xff08;列&#xff09;矩阵 七、同型矩阵 八、矩阵相等 九、零矩阵 十、方阵的行列式 一、定义 二、方阵 三、对角阵 四、单位阵 五、数量阵 六、行&#xff08;列&#xff09;矩阵 七、同型矩…...

k8s 使用cert-manager证书管理自签

个人建议使用安装更快&#xff0c;比helm快&#xff0c;还要等待安装crd kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.3/cert-manager.yaml#官网 https://cert-manager.io/docs/installation/kubectl/#创建自签的ClusterIssuer c…...

SpringSecurity+JWT前后端分离架构登录认证

目录 1. 数据库设计 2. 代码设计 登录认证过滤器 认证成功处理器AuthenticationSuccessHandler 认证失败处理器AuthenticationFailureHandler AuthenticationEntryPoint配置 AccessDeniedHandler配置 UserDetailsService配置 Token校验过滤器 登录认证过滤器接口配置…...

笔试面试题——二叉树进阶(一)

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、根据二叉树创建字符串1、题目讲解2、思路讲解3、代码实现 二、二叉树的分层遍历1、题目讲…...

C++的std--ranges适配器视图与惰性求值在无限序列中的潜在应用

C的std::ranges适配器视图与惰性求值在无限序列中的潜在应用 现代C通过引入std::ranges库&#xff0c;为序列操作带来了更简洁、高效的编程范式。其中&#xff0c;适配器视图与惰性求值的结合&#xff0c;为处理无限序列提供了全新的可能性。这种技术不仅能够避免不必要的计算…...

Wiki.js日志系统终极指南:从记录到安全监控的全面解析

Wiki.js日志系统终极指南&#xff1a;从记录到安全监控的全面解析 【免费下载链接】wiki- Wiki.js | A modern and powerful wiki app built on Node.js 项目地址: https://gitcode.com/GitHub_Trending/wiki78/wiki- 当您的团队在Wiki.js中协作编辑文档时&#xff0c;是…...

mmdetection2.11.0实战:如何用VOC和COCO数据集精准计算每个类别的mAP(附避坑指南)

mmdetection2.11.0实战&#xff1a;VOC与COCO数据集mAP计算全解析与避坑指南 在目标检测领域&#xff0c;mAP&#xff08;mean Average Precision&#xff09;是衡量模型性能的核心指标。但不同数据集&#xff08;如VOC和COCO&#xff09;的评估标准差异&#xff0c;常常让研究…...

10个ProjectLearn性能优化技巧:提升网站加载速度和用户体验的终极指南

10个ProjectLearn性能优化技巧&#xff1a;提升网站加载速度和用户体验的终极指南 【免费下载链接】projectlearn-project-based-learning A curated list of project tutorials for project-based learning. 项目地址: https://gitcode.com/gh_mirrors/pr/projectlearn-proj…...

iStoreOS软路由结合Cpolar内网穿透:打造稳定高效的居家远程办公网络

1. 为什么你需要iStoreOS软路由Cpolar组合&#xff1f; 最近两年远程办公越来越普遍&#xff0c;但很多朋友都遇到过这样的困扰&#xff1a;公司电脑里的文件急着要用&#xff0c;跑回办公室又太麻烦&#xff1b;出差在外需要调取内网资料&#xff0c;VPN连接却卡成幻灯片。我自…...

Wan2.2-I2V-A14B极限测试:挑战生成复杂网络拓扑结构的动态演化视频

Wan2.2-I2V-A14B极限测试&#xff1a;挑战生成复杂网络拓扑结构的动态演化视频 1. 开场白&#xff1a;当AI遇见网络拓扑 最近在测试Wan2.2-I2V-A14B模型时&#xff0c;我突发奇想&#xff1a;这个号称能理解复杂概念的文生视频模型&#xff0c;能否准确呈现网络拓扑结构的动态…...

ComfyUI IPAdapter Plus插件ClipVision模型加载故障排除指南

ComfyUI IPAdapter Plus插件ClipVision模型加载故障排除指南 【免费下载链接】ComfyUI_IPAdapter_plus 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI_IPAdapter_plus 问题诊断&#xff1a;ClipVision模型加载失败的典型症状与成因分析 在ComfyUI工作流中集成…...

Qwen3-TTS声音克隆部署全攻略:简单3步,开启你的语音克隆之旅

Qwen3-TTS声音克隆部署全攻略&#xff1a;简单3步&#xff0c;开启你的语音克隆之旅 想不想让一段普通的文字&#xff0c;用你指定的声音说出来&#xff1f;比如&#xff0c;用你自己的声音给视频配音&#xff0c;用朋友的声音讲个笑话&#xff0c;或者用某个角色的声音朗读一…...

【开题答辩全过程】以 基于Android的个人财务管理系统的设计与实现为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…...

OpenClaw自动化写作:用nanobot生成技术文档草稿

OpenClaw自动化写作&#xff1a;用nanobot生成技术文档草稿 1. 为什么需要自动化写作助手 作为一个经常需要撰写技术文档的开发者&#xff0c;我长期被两个问题困扰&#xff1a;一是从大纲到完整内容的填充过程耗时费力&#xff0c;二是反复检查格式和语法错误消耗大量精力。…...