詳解Qt使用QImage類(lèi)實(shí)現(xiàn)圖像基本操作
一、項(xiàng)目介紹
利用QImage類(lèi)實(shí)現(xiàn)對(duì)圖像的基本操作,包括圖像顯示、圖像縮放、圖像旋轉(zhuǎn)等。
二、項(xiàng)目基本配置
新建一個(gè)Qt案例,項(xiàng)目名稱(chēng)為“ImageTest”,基類(lèi)選擇“QWidget”,點(diǎn)擊選中創(chuàng)建UI界面復(fù)選框,完成項(xiàng)目創(chuàng)建。
三、UI界面設(shè)計(jì)
UI界面布局如下:
界面中創(chuàng)建了5個(gè)控件,其名稱(chēng)和類(lèi)型如下:
序號(hào) | 名稱(chēng) | 類(lèi)型 | 屬性 |
---|---|---|---|
① | Choose | QPushButton | text:選擇圖像 |
② | Rotate | QPushButton | text:圖像旋轉(zhuǎn) |
③ | Zoom | QPushButton | text:圖像縮放 |
④ | imagelabel | QLabel | \ |
⑤ | horizontalSlider | QSlider | minimum:0 maximum:359 |
四、主程序?qū)崿F(xiàn)
4.1 widget.h頭文件
頭文件中聲明原始圖像img:
public: QImage img;//原始圖像
聲明三個(gè)按鈕點(diǎn)擊槽函數(shù)和一個(gè)滑動(dòng)條滑動(dòng)槽函數(shù):
private slots: void on_Choose_clicked(); void on_Rotate_clicked(); void on_Zoom_clicked(); void on_horizontalSlider_valueChanged(int value);
4.2 widget.cpp源文件
定義選擇圖像槽函數(shù):
//選擇圖像 void Widget::on_Choose_clicked() { QString path=QFileDialog::getOpenFileName(this,tr("選擇圖像"),"E:\\image\\",tr("Images (*.png *.bmp *.jpg *.tif *.GIF )")); if(path.isEmpty()) { return; } else { if(! ( img.load(path) ) ) //加載圖像 { QMessageBox::information(this,tr("打開(kāi)圖像失敗"),tr("打開(kāi)圖像失敗!")); //delete img; return; } //img.load(path); ui->imagelabel->setPixmap(QPixmap::fromImage(img)); } }
定義圖像縮放槽函數(shù):
//圖像縮放 void Widget::on_Zoom_clicked() { QImage* imgScaled = new QImage; int width=ui->imagelabel->width()/2; int height=ui->imagelabel->height()/2; *imgScaled=img.scaled(width,height,Qt::KeepAspectRatio);//對(duì)半縮放 ui->imagelabel->setPixmap(QPixmap::fromImage(*imgScaled)); }
定義圖像旋轉(zhuǎn)槽函數(shù):
//圖像旋轉(zhuǎn) void Widget::on_Rotate_clicked() { ui->horizontalSlider->setVisible(true);//顯示滑動(dòng)條 }
定義滑動(dòng)條值變化槽函數(shù):
//進(jìn)度條值變化 void Widget::on_horizontalSlider_valueChanged(int value) { qDebug()<<value;//輸出旋轉(zhuǎn)角度 QImage* imgRatate = new QImage; QMatrix matrix; matrix.rotate(value); *imgRatate = img.transformed(matrix); ui->imagelabel->setPixmap(QPixmap::fromImage(*imgRatate)); }
五、效果演示
完整效果如下:
到此這篇關(guān)于詳解Qt使用QImage類(lèi)實(shí)現(xiàn)圖像基本操作的文章就介紹到這了,更多相關(guān)Qt圖像基本操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺析ORB、SURF、SIFT特征點(diǎn)提取方法以及ICP匹配方法
這篇文章主要為大家介紹了常用的特征點(diǎn)提取方法(ORB、SURF、SIFT)和ICP匹配方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2021-12-12c++ 子類(lèi)構(gòu)造函數(shù)初始化及父類(lèi)構(gòu)造初始化的使用
這篇文章主要介紹了c++ 子類(lèi)構(gòu)造函數(shù)初始化及父類(lèi)構(gòu)造初始化的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07詳解C語(yǔ)言中的內(nèi)存四區(qū)模型及結(jié)構(gòu)體對(duì)內(nèi)存的使用
這篇文章主要介紹了C語(yǔ)言中的內(nèi)存四區(qū)模型及結(jié)構(gòu)體對(duì)內(nèi)存的使用,包括結(jié)構(gòu)體中內(nèi)存泄漏情況的注意點(diǎn)提醒,需要的朋友可以參考下2016-03-03Qt實(shí)現(xiàn)小功能之復(fù)雜抽屜效果詳解
在Qt自帶的控件中,也存在抽屜控件:QToolBar。但是,該控件有個(gè)缺點(diǎn):一次只能展開(kāi)一個(gè)抽屜信息,無(wú)法實(shí)現(xiàn)多個(gè)展開(kāi)。所以本文將自定義實(shí)現(xiàn)復(fù)雜抽屜效果,需要的可以參考一下2022-10-10在vs2017上配置AppGameKit庫(kù)的圖文教程
這篇文章主要介紹了在vs2017上配置AppGameKit庫(kù)的教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04C++?OpenCV實(shí)戰(zhàn)之車(chē)道檢測(cè)
這篇文章主要介紹了基于C++?OpenCV實(shí)現(xiàn)的車(chē)道檢測(cè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01C++類(lèi)中的常數(shù)據(jù)成員與靜態(tài)數(shù)據(jù)成員之間的區(qū)別
常數(shù)據(jù)成員是指在類(lèi)中定義的不能修改其值的一些數(shù)據(jù)成員,類(lèi)似于我們以前學(xué)過(guò)的常變量,雖然是變量,也有自己的地址,但是一經(jīng)賦初值,便不能再被修改2013-10-10