QImage的显示

article/2025/10/19 5:38:21

因为想利用QT的gui在arm上显示的缘故,因此开始接触了QT。最近,用QT在弄一个显示图片的小程序。程序如下:

#include <QtGui/QApplication>

#include "mainwindow.h"

#include "qimage.h"

#include "qlabel.h"

#include "qpixmap.h"

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

{

QApplication a(argc, argv);

MainWindow w;

QLabel* label=new QLabel("",0);

QImage img;

img.load("E:/Image/lena.jpg");

QPixmap mp;

mp.fromImage(img);

label->setPixmap(mp);

label->show();

return a.exec();

}

因为要对图像进行操作,所以不得不利用QImage这个类,需要显示所以还得利用QPixmap这个类。

从上面的程序来看,似乎没什么问题。大体思路是先把lena.jpg给了Qimage,然后在把QImage 转为QPixmap,接着就可以显示了。

这个程序诚如所想的那样,编译没有什么问题,但是却无法显示lena这张图像。这让我很郁闷。我检查程序一遍又一遍,但是都没有问题。没办法,我上谷歌搜了一下,大多情况都是解说QImage,QPixmap,QBitmap,Qpicture的关系。并没有找到我想要的答案。我也到CV群里去问了一下原因,同时也把代码发到群上去了。所幸,群里热心的“冷血枪手”告诉我可能的原因是由于编译库的错误。因为,我只装了一个QT Creator, 并没有装QT库,所以我也觉有可能是QT连接库的原因。但是,当我直接利用QPixmap map(my image path name)的时候,却是可以正常显示的。按理说如果是链接库的原因的话,GUI是不能正常工作的。但是我还是不确定,是不是GUI真的没问题。于是乎索性把QT库给装了。同时,修改INCLUDEPATH 和LIBS,这下链接库:动态静态都有了,应该没钱恩提了吧。把上面的程序运行了一遍,但是结果还是一样,图像还是不能正确显示,这令我很沮丧。还是不甘心,我又有看了一下帮助文档。把QImage,QPixmap这两个类看了一遍,还是没发现问题的所在。后来,我又到谷歌in English上去搜了一下,偶然看到别人写的显示代码label->setPixmap(QPixmap::fromimage(img));我才恍然大悟。回去仔细看了一下fromimage这个函数,才发现上面的程序的问题所在。

QPixmap mp;

mp.fromImage(img);

img并没有转换给mp,上面的mp根本就没有初始化,而mp.fromimage仅仅是表示调用了这么一个转换函数,而转换的结构并未赋给任何值,因此mp仍然是一个空的对象,所以显示不出图像了。想通这一点,把这句程序

"

mp.fromImage(img);

"

改为

mp=mp.fromimage(img);

运行结果正确。

通过这个小程序,让我再一次觉得自己的基础还是不行,对C++的理解还是不够熟悉,同时缺乏一种迅速定位问题所在的能力,态度还不够认真仔细。

QImage的显示 - xiaofevgtech - xiaofevg的tech博客

 




FROM: http://xiaofevgtech.blog.163.com/blog/static/18614950820114289810425/


http://chatgpt.dhexx.cn/article/HZjTdrSG.shtml

相关文章

Qt QImage类详解(QImage类型转换、QImage类函数及QImage像素操作)

打开Qt帮助文档&#xff0c;会看到有关于QImage的描述如下&#xff1a;The QImage class provides a hardware-independent image representation that allows direct access to the pixel data, and can be used as a paint device。即QImage类是设备无关的图像&#xff0c;可…

PyQt5-QImage、QPixmap、Opencv与QLabel、Matplotlib的互动

文章目录 前言一、转换1.1 Opencv_to_QPixmap1.2 QImage_to_QPixmap1.3 QPixmap_to_Opencv1.4 QImage_to_Opencv1.5 Opencv_to_QImage 二、实战案例2.1 案例1-图像旋转 总结 前言 早期进行图像旋转用的笨方法是&#xff1a; cv2.imread()读取图像numpy旋转图像将旋转后的图像保…

QImage 图片分割、保存

QImage 图片分割、保存 简介 之前一直只用Qt做图片显示&#xff0c;这次突发奇想想用Qt做做图像相关的&#xff0c;就尝试了一下图片切割&#xff0c;保存。 QImage介绍 QImage类为Qt提供的一个支持图像算法处理的类库&#xff0c;可以精确到像素及单位。在我理解不是提供了…

QImage类

QImage类提供了一个硬件无关的图像表示方法&#xff0c;该图像可以逐像素被访问和用于画图设备。 Qt提供了QImage、QPixmap、QBitmap和QPicture四种图像操作类。QImage类主要用于I/O和直接逐像素访问、操作&#xff1b;QPixmap主要用于在屏幕中显示图像&#xff1b;QBitmap是一…

Qt使用QImage保存成JPG(PNG)图像到本地

一、QImage类简介 QImage提供了一个与硬件无关的图像表示方法&#xff0c;允许直接访问像素数据&#xff0c;可用作绘图设备。QImage类支持QImage::Format、enum描述的多种图像格式。包括8-bit, 32-bit 和alpha混合图像QImage 提供很多可以用于获取图像信息和进行图像变换的函…

QImage

一、描述 QImage 类提供了一种独立于硬件的图像表示&#xff0c;允许直接访问像素数据&#xff0c;并且可以用作绘图设备。 QImage 是为 I/O 和直接像素访问和操作而设计和优化的&#xff0c; 因为 QImage 是 QPaintDevice 的子类&#xff0c;所以 QPainter 可用于直接在图像…

图像处理 QImage

在Qt中有四种处理图像的方法&#xff1a; QImage &#xff1a;使用I/O &#xff0c;可以对像素进行处理QPixmap&#xff1a;主要用在屏幕的显示QBitmap&#xff1a; QPixmap的子类&#xff0c;处理颜色深度&#xff0c;只能显示黑白两种颜色&#xff0c;用于遮罩QPicture&…

QImage的用法

QImage提供了几种加载图像文件的方法&#xff1a; &#xff08;1&#xff09;构造QImage对象 Image myImage1 QImage(filename); 根据文件名打开图像 支持的图片格式是&#xff1a; &#xff08;2&#xff09;QImage(uchar *data, int width, int height, Format format …) 用…

QImage使用说明

详细描述 QImage类提供独立于硬件的图像表示&#xff0c;允许直接访问像素数据&#xff0c;并可用作绘制设备。 Qt提供了四个用于处理图像数据的类&#xff1a;QImage、QPixmap、QBitmap和QPicture。QImage针对I/O、直接像素访问和操作进行了设计和优化&#xff0c;而QPixmap…

QImage类详解(QImage类型转换、QImage类函数及QImage像素操作)

QImage类&#xff08;QImage类型转换、QImage类函数及QImage像素操作&#xff09; 打开Qt帮助文档&#xff0c;会看到有关于QImage的描述如下&#xff1a;The QImage class provides a hardware-independent image representation that allows direct access to the pixel dat…

J1939 协议

J1939 协议简介 J1939协议是基于CAN 2.0B所发展的出来的&#xff0c;基于CAN 的物理层。主要用于commercial vehicle的通信。J1939的主要目的是制定统一的上层application诊断的信息。 J1939的最大特点是定义了PGN&#xff08;Parameter Group Number). 大多数的PGN是8个字节…

SAE J1939学习笔记(三)

J1939故障代码种类 J1939 由几个不同的诊断信息&#xff1a; –诊断信息 1 - DM1 – 现行故障代码 –诊断信息 2 - DM2 – 非现行故障代码 –诊断信息 3 - DM3 – 清除非现行故障代码 通常地&#xff0c;用户会用 DM1 信息来读取现行故障码。 DM1 信息是 PGN 65226 or FECA h…

新功能发布—TSMaster如何实现J1939多帧报文收发

前言 众所周知&#xff0c;J1939协议是由美国汽车工程师协会&#xff08;SAE&#xff09;定义的一组标准。J1939标准用于卡车、公共汽车和移动液压等重型车辆。如今大多数车辆都通过CAN进行ECU通信。但是CAN总线仅仅是提供了通信的基础&#xff08;就像是电话&#xff09;&…

CAN协议 J1939

转自&#xff1a;http://blog.sina.com.cn/s/blog_bf97bd7e0102wl2y.html 这几天在公司看了SAE推行的 J1939标准&#xff08;SAE&#xff1a;美国汽车工程协会&#xff09;&#xff0c;这里整理下学习要点&#xff0c;主要包含以下几个协议&#xff1a; 物理层 SAE J1939-11…

J1939协议与CAN2.0对应关系图表

SAE J1939 消息帧格式定义与CAN 2.0B帧格式对应关系 J1939应用层协议详细描述了用于J1939网络的每个参数&#xff0c;包括其数据长度、数据类型、分辨率、范围及参考标签&#xff0c;并为每个参数分配了一个编号&#xff08;SPN&#xff09;。由于J1939协议是以协议数据单元&am…

Python实现CAN总线J1939报文接收、发送

前言 J1939协议是由美国汽车工程师协会&#xff08;SAE&#xff09; (SAE协会简介)定义的一组标准。J1939标准用于卡车、公共汽车和移动液压等重型车辆。在许多方面&#xff0c;J1939标准类似于旧版J1708和J1587标准&#xff0c;但J1939标准协议建立在CAN&#xff08;控制器区域…

J1939标准概述【小白入门】

文章目录 J1939标准概述&#xff1a;J1939/11物理层J1939/13板外诊断连接器J1939/21数据链路层J1939/31网络层J1939/71车辆应用层J1939/73应用层-诊断层J1939/81网络管理总结 J1939标准概述&#xff1a; J1939由下列子标准组成&#xff1a; J1939 – 串行控制和通信车辆网络…

J1939-21数据链路层多帧协议PDU解析

一、协议数据单元&#xff08;PDU&#xff09; P 是优先级&#xff0c;R 是保留位&#xff0c;DP 是数据页&#xff0c;PF 是PDU 格式&#xff0c;PS 是特定PDU&#xff0c;SA 是源地址 优先级&#xff08;P&#xff09;&#xff1a;这三位仅在总线传输中用来优化消息延迟&…

CAN总线的特点及J1939协议通信原理、内容和应用

众多国际知名汽车公司早在20世纪80年代就积极致力于汽车网络技术的研究及应用。迄今已有多种网络标准&#xff0c;如专门用于货车和客车上的SAE的J1939、德国大众的ABUS、博世的CAN、美国商用机器的AutoCAN、ISO的VAN、马自达的PALMNET等。 在我国的轿车中已基本具有电子控制和…

IPEmotion采集J1939协议信号

一 背景 由于商用车相对于乘用车更注重实用性&#xff0c;功能也较单一&#xff0c;且具有产量小的特点&#xff0c;因此在设计开发时需要进行约束&#xff0c;以更大程度实现软硬件的复用和成本的降低&#xff0c;在此需求下J1939协议便随之产生了。 J1939协议是由美国汽车工…