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类实现对图像的基本操作,包括图像显示、图像缩放、图像旋转等,与滑动条配合使用,可参考文章:https://blog.csdn.net/didi_ya/article/details/122897518
利用Qt和GDAL实现遥感图像的显示和漫游等操作。使用需要自己配置相应的Qt和GDAL路径。
Qt实战案例之利用QImage类实现对图像的简单处理(显示图像、灰度化处理),可参考文章:https://blog.csdn.net/didi_ya/article/details/122810276
\初级篇 第1章 Qt初步实践 卢传富 建立了第一个较简单的Qt应用程序,在GUI用户界面中显示一行中文。 2 \ 第2章 对话框 \——QDialog 卢传富介绍了Qt的对话框类QDialog,实现了一个自定义的登录对话框,举例说明了Qt...
2. 图像基本操作 2 2.1 加操作 2 2.2 求反 3 2.3 几何变换 3 3. 图像傅里叶变换 6 4. 图像处理基本方法 10 4.1 直方图均衡化 10 4.2 中值滤波 11 4.3 图像灰度指数变换增强 11 4.4 Laplace锐化处理 12 5. 边缘检测 ...
\初级篇 第1章 Qt初步实践 卢传富 建立了第一个较简单的Qt应用程序,在GUI用户界面中显示一行中文。 2 \ 第2章 对话框 \——QDialog 卢传富介绍了Qt的对话框类QDialog,实现了一个自定义的登录对话框,举例说明了...
简单实现在QLabel上显示图片后鼠标拖动绘制矩形,圆形。绘制结束后得到坐标点位 重写了鼠标事件,基本绘制ROI的操作。留有联系方式,不清楚的地方可以联系。
利用QT建立工程项目,用C++调用海康相机SDK来采集图像,并通过openCV将获取的图像数据转换为可以进行显示的图像。
前面一节我们讲解了图片的显示,其中很多都用到了坐标的变化,这一节我们简单讲一下Qt的坐标系统,其实也还是主要讲上一节的那几个函数。这里我们先讲解一下Qt的坐标系,然后讲解那几个函数,它们分别是: translate...
软件将包含基本的RTSP拉流功能,用于接收和显示无人机平台的实时视频流。实现拍照、录像和OSD叠加等功能,并通过按钮控制云台进行拍照、录像等操作。 具体功能和特点如下: RTSP拉流功能:通过与无人机平台对接,...
丰富的功能:库中包含了数千个优化过的函数,涵盖了计算机视觉领域的诸多方面,如图像处理(滤波、形态学操作、色彩空间转换等)、特征检测与描述(如SIFT、SURF、ORB等)、物体识别与检测(如Haar级联分类器、HOG...
丰富的功能:库中包含了数千个优化过的函数,涵盖了计算机视觉领域的诸多方面,如图像处理(滤波、形态学操作、色彩空间转换等)、特征检测与描述(如SIFT、SURF、ORB等)、物体识别与检测(如Haar级联分类器、HOG...
丰富的功能:库中包含了数千个优化过的函数,涵盖了计算机视觉领域的诸多方面,如图像处理(滤波、形态学操作、色彩空间转换等)、特征检测与描述(如SIFT、SURF、ORB等)、物体识别与检测(如Haar级联分类器、HOG...
基本图像操作和导航 的库来浏览图像 缩略图模式:可浏览的图像预览网格 带制表符补全的命令模式 使用模式匹配进行搜索 简单的标记和标签系统 通过配置文件, ,...来定制键绑定,设置和样式 安装 要了解如何在各种...
将图像显示在屏幕上后,用户将能够通过鼠标的操作选择她/他希望修改的图像感兴趣区域,从而创建从原始图像切出的图像。如果用户希望使用此标签,则可以通过其他单选按钮进行选择,如果他/她希望在感兴趣的图像中进行...
丰富的功能:库中包含了数千个优化过的函数,涵盖了计算机视觉领域的诸多方面,如图像处理(滤波、形态学操作、色彩空间转换等)、特征检测与描述(如SIFT、SURF、ORB等)、物体识别与检测(如Haar级联分类器、HOG...
该程序的基本操作非常简单:只需将视频文件拖放到主窗口中,在配置文件列表中选择默认编码器设置,然后单击工具栏上的转换按钮即可。更高级的用户可以自定义许多视频和音频编码参数:音频和视频比特率,显示宽高比,...
而且还支持一些其他富媒体文件格式,比如除支持JPG, PNG, GIF外还支持 SWF格式的flash动画 和FLV格式的视频文件,还支持DOC, PDF, HTML, QT等格式的文件,但是请注意这些文件格式可能会在新的浏览器窗口中打开显示,...
4.5 显示接口与Linux FrameBuffer83 4.5.1 FrameBuffer机制介绍83 4.5.2 LCD简介84 实验4.5 FrameBuffer实验88 4.6 V4L程序设计90 4.6.1 V4L概述90 4.6.2 V4L设备的体系结构91 实验4.6 Linux视频V4L驱动实验...