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

QImage显示图片像素

请添加图片描述
在Qt中,QImage 类是用来表示和处理图像的。如果你想查看或显示一个图片的像素数据,你可以使用 QImage 提供的方法来访问这些数据。以下是一些基本的方法来获取和显示图片的像素信息:

获取图像的像素格式:
使用 QImage::format() 方法可以获取图像的像素格式,这对于理解像素数据的布局很重要。

QImage::Format format = image.format();

遍历图像的每个像素:
使用 QImage::constScanLine() 方法可以获取图像的一行像素数据的指针,然后你可以遍历这些像素。

const uchar *scanLine = image.constScanLine(y);

获取特定像素的颜色值:
使用 QRgb 类型来表示一个像素的颜色值,你可以使用 QImage::pixel() 方法来获取特定位置的像素的颜色值。

QRgb pixelValue = image.pixel(x, y);

显示像素颜色值:
你可以将像素的颜色值转换为更易读的格式,例如使用 QColor 来显示颜色。

QColor color(pixelValue);
qDebug() << "Pixel at" << x << ", " << y << "is" << color.name();

完整的控件代码如下

#ifndef QIMAGEWIDGET_H
#define QIMAGEWIDGET_H#include <QWidget>
#include <QMouseEvent>
#include <QPaintEvent>
#include <QEvent>
#include <QRgb>
#include <QPainter>
#include <QDebug>class QImageWidget : public QWidget
{Q_OBJECTpublic:explicit QImageWidget(QWidget *parent = nullptr);~QImageWidget();protected:virtual void mouseMoveEvent(QMouseEvent *event);virtual void enterEvent(QEvent *event);virtual void leaveEvent(QEvent *event);virtual void paintEvent(QPaintEvent *event);public slots:void setQImage(QImage);private:QImage m_image;bool mouseState;QPoint m_pos;QPoint t_pos;int m_r;int m_g;int m_b;
};#endif // QIMAGEWIDGET_H

实现文件

#include "qimagewidget.h"QImageWidget::QImageWidget(QWidget *parent) :QWidget(parent)
{mouseState = false;m_pos = QPoint(0,0);t_pos = QPoint(0,0);m_r = 0;m_g = 0;m_b = 0;setMouseTracking(true);QImage  t_image;t_image.load("ff.jpg");setQImage(t_image);
}QImageWidget::~QImageWidget()
{}void QImageWidget::mouseMoveEvent(QMouseEvent *event)
{t_pos = event->pos();float tx = ((float)t_pos.x())/((float)this->width());float ty = ((float)t_pos.y())/((float)this->height());m_pos.setX(tx*m_image.width());m_pos.setY(ty*m_image.height());QColor trgb = m_image.pixelColor(m_pos);m_r = trgb.red();m_g = trgb.green();m_b = trgb.blue();update();
}void QImageWidget::enterEvent(QEvent *event)
{mouseState = true;
}void QImageWidget::leaveEvent(QEvent *event)
{mouseState = false;update();
}void QImageWidget::paintEvent(QPaintEvent *event)
{QPainter painter(this);painter.setBrush(QColor("blue"));painter.drawRect(0,0,this->width(),this->height());QImage t_image = m_image.scaled(this->width(),this->height());painter.drawPixmap(0,0,this->width(),this->height(),QPixmap::fromImage(t_image));if(mouseState == true){painter.setPen(QColor("red"));painter.drawText(t_pos,QString("[%1,%2]:rgb(%3,%4,%5)").arg(m_pos.x()).arg(m_pos.y()).arg(m_r).arg(m_g).arg(m_b));}}void QImageWidget::setQImage(QImage p_image)
{m_image = p_image;update();
}

相关文章:

QImage显示图片像素

在Qt中&#xff0c;QImage 类是用来表示和处理图像的。如果你想查看或显示一个图片的像素数据&#xff0c;你可以使用 QImage 提供的方法来访问这些数据。以下是一些基本的方法来获取和显示图片的像素信息&#xff1a; 获取图像的像素格式&#xff1a; 使用 QImage::format() …...

uniapp使用高德地图(公众号+h5)

选择微信小程序的话后果就是你的地图出不来&#xff0c;出来了就报key异常 下面直接放配置和代码&#xff1a; 打包后的高德uni-app,uniCloud,serverless,高德地图,申请高德地图Key,配置使用高德地图,参数说明,高德开放平台用户名,百度地图,申请百度地图Key,配置使用百度地图,…...

深度学习与浅层学习:技术变革下的竞争态势

深度学习与浅层学习&#xff1a;技术变革下的竞争态势 在过去十年中&#xff0c;深度学习的崛起对整个人工智能领域产生了巨大影响&#xff0c;几乎在各种任务中显示出超越传统浅层学习方法的性能。这种变化不仅推动了技术的进步&#xff0c;还对硬件市场&#xff0c;尤其是显…...

LeetCode 219. 存在重复元素 II

LeetCode 219. 存在重复元素 II 给你一个整数数组 nums 和一个整数 k &#xff0c;判断数组中是否存在两个 不同的索引 i 和 j &#xff0c;满足 nums[i] nums[j] 且 abs(i - j) < k 。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&am…...

【目标检测】使用自己的数据集训练并预测yolov8模型

1、下载yolov8的官方代码 地址&#xff1a; GitHub - ultralytics/ultralytics: NEW - YOLOv8 &#x1f680; in PyTorch > ONNX > OpenVINO > CoreML > TFLite 2、下载目标检测的训练权重 yolov8n.pt 将 yolov8n.pt 放在ultralytics文件夹下 3、数据集分布 注…...

应用监控SkyWalking调研

参考&#xff1a; 链路追踪( Skyworking )_skywalking-CSDN博客 企业级监控项目Skywalking详细介绍&#xff0c;来看看呀-CSDN博客 SkyWalking 极简入门 | Apache SkyWalking 使用 SkyWalking 监控 ClickHouse Server | Apache SkyWalking https://zhuanlan.zhihu.com/p/3…...

Selenium使用注意事项:

find_element 和 find_elements 的区别 WebDriver和WebElement的区别 问题&#xff1a; 会遇到报错&#xff1a; selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector",&…...

小程序需要进行软件测试吗?小程序测试有哪些测试内容?

在如今移动互联网快速发展的时代&#xff0c;小程序已成为人们生活中不可或缺的一部分。然而&#xff0c;面对日益增长的小程序数量和用户需求&#xff0c;小程序的稳定性和质量问题日益突显。因此&#xff0c;对小程序进行软件测试显得尤为重要。 近期的一项调查显示&#xf…...

一文读懂企业租用GPU的注意事项!

在人工智能、大数据处理及高性能计算领域&#xff0c;GPU算力已成为推动技术创新与业务增长的核心动力。尚云Sunclouds作为GPU算力租赁服务提供商&#xff0c;为用户提供了灵活、高效且成本可控的解决方案。对于初次接触GPU算力租赁的用户而言&#xff0c;了解并掌握租用过程中…...

Linux运维:mysql主从复制原理及实验

当一台数据库服务器出现负载的情况下&#xff0c;需要扩展服务器服务器性能扩展方式有向上扩展&#xff0c;垂直扩展。向外扩展&#xff0c;横向扩展。通俗的讲垂直扩展是将一台服务器扩展为性能更强的服务器。横向扩展是增加几台服务器。 主从复制好比存了1000块钱在主上&…...

022-GeoGebra中级篇-几何对象之直线与坐标轴

本文主要介绍一下GeoGebra中直线的常见输入方式&#xff0c;比如工具栏输入、表达式输入、函数输入&#xff0c;最后再把坐标轴的调用简单介绍一下。内容比起传统的教学更偏向于实战一些&#xff0c;若感兴趣欢迎继续阅读。 目录 一、直线1. 关于工具栏绘制&#xff08;1&#…...

node js安装、配置(Windows版)

目录 node js 安装 node js 全局配置 1、全局安装路径 2、全局缓存路径 3、修改环境变量 pnpm安装、卸载 全局安装pnpm 验证pnpm版本 卸载pnpm 1、移除全局安装的包 2、移除pnpm cli 脚本直接安装 npm安装的使用命令直接卸载 node js 安装 cmd 查看是否存在&…...

go语言day08 泛型 自定义错误处理 go关键字:协程

泛型&#xff1a; 抛错误异常 实现error接口类型 用java语言解释的话&#xff0c;实现类需要重写error类型的抽象方法Error().这样就可以自定义异常处理。 回到go语言&#xff0c;在Error()方法中用*argError 这样一个指针类来充当error接口的实现类。 在f2()方法中定义返回值…...

MySql性能调优01-[数据结构和索引]

数据结构和索引 什么是索引索引的种类常见索引数据结构和区别二叉树 红黑树 什么是索引 索引的种类 在Mysql中索引是在存储引擎层实现的&#xff0c;而不是在服务层实现的 按数据结构分&#xff1a;Btree索引、Hash索引、Full-text索引按存储结构分&#xff1a;聚簇索引、非聚…...

【算法入门-栈】逆波兰表达式求值

&#x1f4d6;逆波兰表达式求值 ✅描述✅扩展&#xff1a;什么是逆波兰表达式✅题解方法一&#xff1a;栈✅题解方法二&#xff08;数组模拟栈&#xff09; 今天又刷了一道题&#xff0c;奥利给 刷题地址&#xff1a; 点击跳转 ✅描述 给定一个逆波兰表达式&#xff0c;求表达…...

【史上最全面ESP32教程】http通信

文章目录 前言HTTP协议是什么&#xff1f;HTTP协议的特点HTTP协议的常见应用 esp32 使用http通信通信流程基础使用HTTPClient 常用的函数函数介绍&#xff1a;void end(void);bool connected(void);void setReuse(bool reuse);void setUserAgent(const String& userAgent);…...

*算法训练(leetcode)第二十七天 | 56. 合并区间、738. 单调递增的数字、968. 监控二叉树

刷题记录 56. 合并区间*738. 单调递增的数字*968. 监控二叉树 56. 合并区间 leetcode题目地址 排序后遇到有重合的区间选择最大的区间保存即可&#xff0c;结果集中保存的是离当前区间最近的区间&#xff0c;因此使用当前区间与结果集中的最后一个集合比较查看是否有重合&…...

OpenJudge 奇数求和

目录 描述思路样例输入样例输出CodeCC 总时间限制: 1000ms 内存限制: 65536kB 描述 计算非负整数 m 到 n&#xff08;包括m 和 n &#xff09;之间的所有奇数的和&#xff0c;其中&#xff0c;m 不大于 n&#xff0c;且n 不大于300。例如 m3, n12, 其和则为&#xff1a;357911…...

【排序 - 快速排序】

快速排序&#xff08;Quick Sort&#xff09;是一种高效的排序算法&#xff0c;它基于分治&#xff08;Divide and Conquer&#xff09;的策略。这种排序算法的核心思想是选择一个基准元素&#xff0c;将数组分割成两部分&#xff0c;使得左边的元素都小于等于基准元素&#xf…...

pytest使用报错(以及解决pytest所谓的“抑制print输出”)

1. 测试类的类名问题 #codingutf-8import pytestclass TestClass1:def setup(self) -> None:print(setup)def test_01(self) -> None:print(test_01111111111111111111111)def test_02(self) -> None:print(test_02)以上述代码为例&#xff0c;如果类名是Test开头&am…...

开源项目编译harbor arm架构的包 —— 筑梦之路

GitHub - amy5200/harbor-arm64 先做个记录&#xff0c;空了再验证...

[笔记] SKF Enveloping FAQ 用户指南

文档编号&#xff1a;Application Note CM3013 1.名词解释&#xff1a; 1.1cavitationWhat Is Cavitation? | Pumps & Systems 叶片在液体中扰动形成的超声波 1.2 stiff machinehttps://suspensionlist.com/the-pros-and-cons-of-stiff-vs-soft-suspension-systems/ …...

宪法学学习笔记(个人向) Part.3

宪法学学习笔记(个人向) Part 3 3. 国家基本制度 3.1 国家性质 3.1.1 国家性质概述 国家性质的概念 国家性质也称国体&#xff0c;或国家的阶级本质&#xff0c;是指各个阶级在国家中的地位&#xff08;哪个阶层是统治阶层&#xff0c;哪个阶层是被统治阶层&#xff0c;哪个…...

联想拯救者Y7000 IRX9 笔记本接口功能介绍

适用机型&#xff1a;Legion Y7000 IRX9; 83JJ&#xff1b; USB&#xff08;3.2 Gen 1&#xff09;Type-接口摄像头开关组合音频插孔 多用于USB Type-C接口 以太网接口 多用途USB Type-C接口&#xff08;支持USB Power Delivery&#xff09;HDMI接口USB&#xff08;3.2 Gen 1&…...

【ESP32】打造全网最强esp-idf基础教程——16.SmartConfig一键配网

SmartConfig一键配网 一、SmartConfig知识扫盲 在讲STA课程的时候&#xff0c;我们用的是代码里面固定的SSID和密码去连接热点&#xff0c;但实际应用中不可能这么弄&#xff0c;我们得有办法把家里的WiFi SSID和密码输入到设备里面去&#xff0c;对于带屏带输入设备还…...

MD5加密和注册页面的编写

MD5加密 1.导入包 npm install --save ts-md5 2.使用方式 import { Md5 } from ts-md5; //md5加密后的密码 const md5PwdMd5.hashStr("123456").toUpperCase(); 遇见的问题及用到的技术 注册页面 register.vue代码 <template><div class"wappe…...

【Android组件】封装加载弹框

&#x1f4d6;封装加载弹框 ✅1. 构造LoadingDialog✅2. 调用LoadingDialog 效果&#xff1a; ✅1. 构造LoadingDialog 构造LoadingDialog类涉及到设计模式中的建造者模式&#xff0c;进行链式调用&#xff0c;注重的是构建的过程&#xff0c;设置需要的属性。 步骤一&#x…...

Spring源码二十:Bean实例化流程三

上一篇Spring源码十九&#xff1a;Bean实例化流程二中&#xff0c;我们主要讨论了单例Bean创建对象的主要方法getSingleton了解到了他的核心流程无非是&#xff1a;通过一个简单工厂的getObject方法来实例化bean&#xff0c;当然spring在实例化前后提供了扩展如&#xff1a;bef…...

前端导出文件时,后端代码出错如何将错误信息返回给前端展示

功能说明&#xff1a;前端导出excel时&#xff0c;后端出现异常&#xff0c;比如sql异常&#xff0c;或者创建excel时出现的异常&#xff0c;希望将这些异常信息返回给前端查看。 框架&#xff1a;vue3 axios Springboot 实现难度分析&#xff1a;前端导出excel&#xff0c…...

解决Spring Boot应用中的内存优化问题

解决Spring Boot应用中的内存优化问题 大家好&#xff0c;我是微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 1. Spring Boot应用的内存管理 在开发和部署Spring Boot应用时&#xff0c;有效地管理内存是确保应用性能和稳…...

龙华app网站制作/优化设计四年级上册数学答案

linux 系统则是由 cron (crond) 这个系统服务来控制的。Linux 系统上面原本就有非常多的计划性工作&#xff0c;因此这个系统服务是默认启动的。另 外, 由于使用者自己也可以设置计划任务&#xff0c;所以&#xff0c; Linux 系统也提供了使用者控制计划任务的命令 :crontab 命…...

国贸做网站公司/如何制作网站

今天&#xff0c;说一Ipad充不了电&#xff0c;我想才没买好久&#xff0c;这么快电池就坏了呀。难道买到歪货了&#xff1f; 它的表现是充电线一接上去&#xff0c;电池指示有反应&#xff0c;也有"闪电"标志&#xff0c;就是充不进去电。本来想打客服的&#xff0c…...

柔造网站定制/网络营销推广价格

第17讲为有条件跳转。 有条件跳转的指令通常为 J[N]Flag 有符号数比较的判定为: 大于(G) 等于(E) 小于(L) 无符号数比较的判定为: 大于(A) 等于(E) 小于(B) X, Y 中存放为16位有符号数&#xff0c;将X&#xff0c;Y中较大的数放入AX MOV AX, X CMP AX, Y JGE SKIP MOV AX, Y SK…...

公司注册网站有什么好处/整站优化seo公司哪家好

文章目录快速排序快排求第k小的数归并排序归并排序求逆序对的个数整数二分浮点数二分高精度高精度加法高精度加法压位&#xff08;压9位&#xff09;高精度减法高精度乘法高精度除法前缀和一维前缀和二维前缀和&#xff08;子矩阵的和&#xff09;差分一维差分二维差分&#xf…...

做网站同行/企业网站优化外包

编写完自己的程序&#xff0c;如何生成其对应的开发者文档以方便我们日后查看呢&#xff1f;使用 javadoc 开发工具即可生成一个开发者文档。本文将介绍使用 javadoc 如何生成开发者文档以及注意的问题。 1.文档注释 注释分为&#xff1a; 单行注释&#xff1a;// 注释内容多…...

建设银行行号网站查询是什么意思/seo网站优化方案书

阅读前提问&#xff0c;文章结尾有答案a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]print(a[-1:] a[-1])这个输出是True or False&#xff1f;今天来和大家一起讨论一下切片的知识点&#xff0c;列表的切片相信大家都用过&#xff0c;切片操作的基本语法比较简单&#xff0c;但是内在逻…...