`
美丽的小岛
  • 浏览: 309381 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Qt中图像的显示与基本操作<转>

    博客分类:
  • QT
 
阅读更多

Qt可显示基本的图像类型,利用QImage、QPxmap类可以实现图像的显示,并且利用类中的方法可以实现图像的基本操作(缩放、旋转)。

1. Qt可显示的图像类型

参考Qt的帮助文档,可支持的类型,即可以直接读取并显示的格式有BMP、GIF、JPG、JPEG、PNG、TIFF、PBM、PGM、PPM、XBM、XPM。

2. Qt用如何显示图像

通常用QLabel显示图像,QLabel类有setPixmap()函数,可以用来显示图像。也可以直接用QPainter画出图像。

如果图像过大,直接用QLabel显示,将会出现有部分图像显示不出来,这时可以用Scroll Area部件。方法:将QLabel部件放到Scroll Area部件里面,将两个采用栅格布局,当图像超出了QLabel部件大小时,就会产生滑动杆,这样图像就可以都看到了。

3. 显示的方法

步骤:先打开一个图像;将图像文件加载进QImage对象中;再用QPixmap对象获得图像;最后用QLabel选择一个QPixmap图像对象显示。

代码如下:

    QString filename;
    filename=QFileDialog::getOpenFileName(this,
                                          tr("选择图像"),
                                          "",
                                          tr("Images (*.png *.bmp *.jpg *.tif *.GIF )"));
    if(filename.isEmpty())
    {
         return;
    }
    else
    {
        QImage* img=new QImage;

        if(! ( img->load(filename) ) ) //加载图像        {
            QMessageBox::information(this,
                                     tr("打开图像失败"),
                                     tr("打开图像失败!"));
            delete img;
            return;
        }
        ui->label->setPixmap(QPixmap::fromImage(*img));
    }



注:也可以直接用QPixmap类的对象采用Load函数加载图像。这里说下QImage和QPixmap类的用处:QImage为图像的像素级访问做了优化,QPixmap使用底层平台的绘制系统进行绘制,无法提供像素级别的操作,而QImage则是使用独立于硬件的绘制系统。

4. 图像缩放

图像缩放采用scaled函数。函数原型

QImage QImage::scaled ( const QSize & size,Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationModetransformMode = Qt::FastTransformation ) const

使用方法如下,还是利用上面的img:

QImage* imgScaled = new QImage;
*imgScaled=img->scaled(width,
                       height,
                       Qt::KeepAspectRatio);
ui->label->setPixmap(QPixmap::fromImage(*imgScaled));

scaled函数中width和height表示缩放后图像的宽和高,即将原图像缩放到(width,height)大小。

5. 图像旋转

图像旋转可以利用QImage类的transformed函数,向transformed函数传入QMatrix对象,QMatrix对象指定了旋转的角度。

代码如下:

QImage* imgRatate = new QImage;
QMatrix matrix;
matrix.rotate(270);
*imgRotate = img->transformed(matrix);
ui->label->setPixmap(QPixmap::fromImage(*imgRotate));

注意:rotate函数中参数是旋转的角度,旋转是按顺时针方向旋转的,上面顺时针旋转270度,即逆时针旋转90度。

6. 图像连续缩放
有了图像缩放的基础,就可以实现图像的连续缩放,可以放置一个横向滑竿(中文解释不标准,就是Horizontal Slider部件 ),滑动滑轮的位置以实现图像连续缩放。

Horizontal Slider部件指向的值为整型value,即缩放后的图像为

img->scaled(orignalWidth*value/100,
                         orignalHeight*value/100,
                         Qt::KeepAspectRatio);

orignalWidth和orignalHeight为原始图像的宽和高。

注意:在对原始图像进行缩放多少倍数时,在相应的槽函数内只需要调用Horizontal Slider部件对象的setValue函数即可,因为Horizontal Slider部件滑竿指向的值一旦变化就会触发对应的槽函数来对图像进行缩放。

分享到:
评论

相关推荐

    Qt实战案例之利用QImage类实现对图像的简单处理(显示图像、灰度化处理)

    通过学习和实践,开发者可以快速地在Qt应用中实现图像显示和处理。在实际开发中,结合QLabel、QWidget等组件,可以构建出功能强大的图像编辑或分析工具。通过不断探索Qt的图像处理API,我们可以实现更多复杂的图像...

    Qt+GDAL图像显示基本功能

    总结来说,"Qt+GDAL图像显示基本功能"涉及到的知识点包括: 1. Qt的QGraphicsView和QGraphicsScene组件的使用 2. 自定义QGraphicsItem以显示遥感图像 3. GDAL库的使用,包括GDALDataset和GDALRasterBand类 4. 遥感...

    Qt案例之利用QImage类实现对图像的基本操作(图像显示、图像缩放、图像旋转).zip

    Qt案例,利用QImage类实现对图像的基本操作,包括图像显示、图像缩放、图像旋转等,与滑动条配合使用,可参考文章:https://blog.csdn.net/didi_ya/article/details/122897518

    Qt显示OpenCV读取的图像

    完整的Qt界面可能包含一个主窗口、一个槽函数(slot)来触发图像显示,以及一个按钮来触发这个槽函数。下面是一个简单的例子: ```cpp #include &lt;QMainWindow&gt; #include &lt;QPushButton&gt; #include &lt;QGridLayout&gt; ...

    Qt下的自定义图像显示控件

    本教程将深入讲解如何在Qt环境下创建一个自定义的图像显示控件,用于支持图像的放大、缩小和移动功能,这对于图像处理和分析的开发者来说是非常实用的。 首先,我们需要了解Qt中的QGraphicsView和QGraphicsScene...

    LINUX下QT写的图像显示DEMO

    在图像显示DEMO中,可能已经实现了某些基本的交互功能,如拖动图像、缩放或旋转等。这些功能通过重载QGraphicsView的事件处理函数(如`mousePressEvent()`, `mouseMoveEvent()`, `wheelEvent()`等)来实现。 关键...

    QT利用realtimechart画波形图

    在"QT利用realtimechart画波形图"这个主题中,我们将深入探讨如何使用QT的QCustomPlot模块,一个强大的2D绘图库,来实现动态显示、交互式操作和保存波形数据。 首先,QCustomPlot是QT中的一个第三方插件,它提供了...

    Qt界面中的OpenCV图像处理:显示与基本操作.pdf

    《Qt界面中的OpenCV图像处理:显示与基本操作.pdf》是一本专为希望将OpenCV与Qt结合使用的开发者设计的实用指南。本书旨在帮助读者掌握如何在Qt应用程序中实现基本的图像处理功能,包括图像加载、显示、基本操作(如...

    VS2012 opencv Qt5 图像显示程序

    在本文中,我们将深入探讨如何使用VS2012(Visual Studio 2012)、OpenCV库和Qt5框架创建一个图像显示程序。这个程序的主要目标是加载并展示静态图像,例如标题中提到的"C:\\lena.jpg"。首先,让我们逐一了解这些...

    Qt、opencv、vs2010本地读取图像、反转图像并显示

    在本文中,我们将深入探讨如何使用Qt、OpenCV和Visual Studio 2010(VS2010)来实现本地图像的读取、反转以及显示。这些技术是计算机视觉和图像处理领域的基础,广泛应用于各种软件开发项目。 首先,让我们从Qt开始...

    QT+opencv图像几何变换,包括图像平移,图像旋转,图像缩放

    在QT+OpenCV的环境中,我们需要创建一个QT窗口,并将OpenCV的图像显示在这个窗口上。`QImage`是QT中的图像类,而OpenCV的`Mat`对象可以通过`QImage`的构造函数转换。在进行几何变换后,将`Mat`对象转换回`QImage`,...

    QT下实现图片的自适应显示、缩放(以鼠标位置为中心进行缩放)、拖动、以及重置并截图保存

    在QT框架下,开发图像处理应用时,我们经常会遇到图片的自适应显示、缩放、移动和截图等需求。本文将详细介绍如何实现这些功能,并提供一个名为`EditPic`的示例项目,帮助你理解其背后的原理和实现方法。 首先,...

    qt-draw.rar_QT 图片_QT 显示图片_qt显示图片

    QT框架是Qt公司开发的一款强大的跨平台应用程序开发框架,它提供了丰富的API用于创建图形用户界面和其他各种应用程序...通过不断学习和实践,开发者可以更好地掌握QT中与图像显示相关的功能,提升应用程序的用户体验。

    C++联合halcon(qt)加载图片缩放、拖拽、显示图像灰度值

    在本文中,我们将深入探讨如何使用C++与Halcon库结合Qt框架来实现图片的加载、缩放、拖拽以及显示图像的灰度值。Halcon是一个强大的机器视觉软件,而Qt是一个流行的跨平台应用程序开发框架,它们的结合可以提供高效...

    qt二维码.rar-qt操作二维码

    本文将深入探讨如何在QT环境中实现二维码的生成与操作。 首先,让我们了解一下二维码(Quick Response Code)。二维码是一种二维条形码,能够存储更多的数据,包括网址、文本、电话号码等。它在现代社会中的应用...

    【机器视觉】Qt联合Halcon编程之显示图片.rar

    5. **将处理结果转换为QImage**: 由于Qt的图像显示组件需要`QImage`对象,你需要将Halcon处理后的图像数据转换为`QImage`。这通常涉及内存缓冲区的复制和格式转换,例如`QImage halconImageToQImage(HObject hImg)`...

    qt下图片循环显示的几个很好的例子,包括源码

    这两个例子展示了在Qt中实现图片循环显示的基本方法。你可以根据实际需求调整图片切换的时间间隔、过渡效果,甚至添加用户交互功能,如暂停、播放、上一张、下一张等。在实际项目中,你可能需要将这些功能封装到一个...

    linux下本地qt显示图片

    在Linux环境下,使用Qt框架开发图形用户界面应用时,经常需要处理显示本地图片的需求。Qt是一个功能强大的跨平台开发库,支持多种操作系统,包括Linux、...理解这些知识点,将有助于在Qt开发中更好地处理图像显示需求。

    纯Qt实现图像的读取、鼠标位置缩放图像、移动图像

    在本文中,我们将深入探讨如何使用Qt框架来实现图像的读取、鼠标位置下的图像缩放以及图像的移动。Qt是一个跨平台的应用程序开发框架,广泛应用于GUI编程,支持多种操作系统,包括Windows、Linux和macOS等。 首先,...

    Qt编写的数字图像处理软件

    "采样"是图像处理的基本操作,涉及到图像的分辨率调整。Qt的QImage类提供了resize()函数,可以改变图像的尺寸,实现图像的重采样。但要注意,简单的缩放可能导致图像质量下降,此时可以采用插值算法如最近邻插值或...

Global site tag (gtag.js) - Google Analytics