💪 图像算法工程师,专业从事且热爱图像处理,图像处理专栏更新如下👇:
📝《图像去噪》
📝《超分辨率重建》
📝《语义分割》
📝《风格迁移》
📝《目标检测》
📝《图像增强》
📝《模型优化》
📝《模型实战部署》
📝《图像配准融合》
📝《数据集》
📝《高效助手》
📝《C++》
📝《Qt》
目录
- 一、QPixmap
- 1.1 主要特点
- 1.2 常用方法
- 1.3 示例
- 二、QImage
- 2.1 主要特点
- 2.2 常用方法
- 2.3 示例
- 三、QPicture
- 3.1 主要特点
- 3.2 常用方法
- 3.3 示例
- 四、总结
在 Qt 中,QPixmap、QImage 和 QPicture 都是与图像相关的类,但它们有不同的用途和特点。下面详细介绍它们的区别、用途以及如何在 Qt 中使用它们。
一、QPixmap
QPixmap 是一个图像缓存类,主要用于图形界面的显示。它被优化用于在屏幕上渲染图像(例如,显示在 QLabel、QPushButton 等控件上),尤其适用于显示图像和处理图像渲染。通常,QPixmap 在绘图时用于绘制到屏幕或其他图形设备。
1.1 主要特点
优化显示性能:QPixmap 是为图形设备(如屏幕)优化的,通常比 QImage 更适合用于显示图像。
设备依赖:它的内容与设备相关(例如显示设备、图形硬件)。
不直接用于处理图像数据:它并不适合用来进行图像处理。
1.2 常用方法
加载和显示图像:
QPixmap pixmap(":/images/image.png");
QLabel *label = new QLabel;
label->setPixmap(pixmap);
绘制到QPainter:
QPainter painter(this);
QPixmap pixmap(":/images/image.png");
painter.drawPixmap(0, 0, pixmap);
1.3 示例
下面使用QPixmap绘图,保存到指定路径后用电脑端的软件打开保存的绘图:
二、QImage
QImage 是一个图像类,主要用于图像数据的处理和转换。它提供了更灵活的图像数据访问,可以直接操作像素数据(例如读取、修改像素)。QImage 更适合用于图像处理任务,而不是显示任务。
2.1 主要特点
适用于图像处理:QImage 提供了对图像像素的直接访问,允许你进行图像操作、修改像素值等。
无设备依赖:与 QPixmap 不同,QImage 是设备无关的,可以在多个设备上使用。
可转换为其他格式:QImage 可以与其他图像处理库(如 OpenCV)一起使用,也可以轻松转换为 QPixmap 进行显示。
2.2 常用方法
加载和处理图像:
QImage image(":/images/image.png");
for (int y = 0; y < image.height(); ++y) {
for (int x = 0; x < image.width(); ++x) {
QColor color(image.pixel(x, y));
// 修改颜色
image.setPixel(x, y, color.rgb());
}
}
绘制到 QPainter:
QPainter painter(this);
QImage image(":/images/image.png");
painter.drawImage(0, 0, image);
2.3 示例
下面使用QImage绘图 :
下面利用QImage对像素值就行修改:
三、QPicture
QPicture 是 Qt 提供的一个用于记录绘图命令的类。与 QPixmap 和 QImage 不同,QPicture 不包含图像数据,而是记录了一系列绘图操作(如线条、矩形、路径等)。这些命令可以稍后重新播放(即重新绘制),因此非常适用于绘图命令的存档和回放。
3.1 主要特点
记录绘图命令:QPicture 记录一系列绘图命令,可以稍后回放这些命令。
适用于复杂绘制:你可以将多个绘图操作记录为一个 QPicture,然后在需要时回放,以实现复用或延迟渲染。
与设备无关:与 QPixmap 和 QImage 不同,QPicture 主要记录绘制操作,而不是图像本身,因此可以用于保存和共享绘制命令。
3.2 常用方法
创建并保存绘图命令:
QPicture picture;
QPainter painter(&picture);
painter.setPen(Qt::blue);
painter.drawRect(10, 10, 100, 100);
painter.end();
picture.save("drawing.zt");
播放绘图命令:
QPicture picture;
picture.load("drawing.pic");
QPainter painter(this);
painter.drawPicture(0, 0, picture);
3.3 示例
下面是QPicture绘图并显示:
绘图过程保存的.zt图像用电脑软件打不开,只能通过绘图指令在Qt软件中打开:
四、总结
以上就是Qt中的绘图设备:QPixmap、QImage 和 QPicture。
其中QPixmap 适用于需要快速显示图像的场景,尤其是与图形硬件紧密交互的应用。
QImage 适合进行图像处理、像素级操作,特别是在需要修改图像数据或与其他图像处理库(如 OpenCV)集成时使用。
QPicture 用于存储绘图命令,并可以将这些命令回放到不同的设备或场景中,适用于绘图操作的存档和共享。
感谢您阅读到最后!😊总结不易,多多支持呀🌹 点赞👍收藏⭐评论✍️,您的三连是我持续更新的动力💖
关注下面「视觉研坊」,获取干货教程、实战案例、技术解答、行业资讯!