Qt利用ImageWatch實(shí)現(xiàn)圖片查看功能
使用Qt實(shí)現(xiàn)ImageWatch圖片查看功能,圖片放大可見RGB像素值。支持打開大圖片,即打開一個(gè)幾百M(fèi)B甚至幾GB的大圖片。
1、什么是ImageWatch
Visual Studio有專門針對(duì)OpenCV開發(fā)的插件,名叫ImageWatch,圖片放大之后可以查看RGB的像素值。
Image Watch 2019 - Visual Studio Marketplace


2、得空自己用Qt仿照實(shí)現(xiàn)了一下這個(gè)功能:
純粹Qt寫的,沒有使用Halcon和OpenCV庫(kù)。
(1)打開8位的灰度圖

鼠標(biāo)滾輪放大之后,可以查看灰度值;鼠標(biāo)中鍵下壓可以拖動(dòng)圖片;

(2)打開24位的彩色圖

鼠標(biāo)放大之后可以查看RGB三通道的數(shù)值;鼠標(biāo)中鍵下壓可以拖動(dòng)圖片;

3、怎么使用Qt打開一個(gè)幾百M(fèi)B甚至幾GB的大圖片?
Qt官方文檔建議使用QImageReader,直接上源碼:
bool MainWindow::readBigImage(const QString &path)
{
QImageReader reader(path);
reader.setAutoTransform(true);
if (!reader.canRead())
{
return false;
}
QSize originSize = reader.size(); //原始的分辨率
qDebug() << originSize;
QSize newSize = originSize.scaled(800, 600, Qt::KeepAspectRatio); //縮放后的分辨率,保持縱橫比
qDebug() << newSize;
QRect clipRt(500, 0, 1000, 1000);
//讀取的方式
#if 1
reader.setScaledSize(newSize); //按照指定的縮放大小來讀取
#else
reader.setClipRect(clipRt); //按照指定的矩形區(qū)域來讀取
#endif
QImage image = reader.read();
if (image.isNull())
{
QFile file(path);
file.open(QIODevice::ReadOnly);
QByteArray data = file.readAll();
image = QImage::fromData(data).scaled(newSize, Qt::KeepAspectRatio);
if (image.isNull())
{
return false;
}
}
ui->graphicsView->addCADBackgroundImage(image);
//一次性定時(shí)器
QTimer::singleShot(10, this, [=]() {
slotViewZoomAuto();
});
return true;
}到此這篇關(guān)于Qt利用ImageWatch實(shí)現(xiàn)圖片查看功能的文章就介紹到這了,更多相關(guān)Qt ImageWatch圖片查看內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C/C++ 連接MySql數(shù)據(jù)庫(kù)的方法
本文對(duì)如何使用MySql的API連接MySql數(shù)據(jù)庫(kù),開發(fā)環(huán)境為VS2008,需要的朋友可以參考下2017-06-06
C語(yǔ)言驅(qū)動(dòng)開發(fā)之內(nèi)核通過PEB獲取進(jìn)程參數(shù)
PEB結(jié)構(gòu)(Process Envirorment Block Structure)其中文名是進(jìn)程環(huán)境塊信息。本文將通過PEB實(shí)現(xiàn)獲取進(jìn)程參數(shù),感興趣的小伙伴可以了解一下2022-10-10
Qt音視頻開發(fā)之利用ffmpeg實(shí)現(xiàn)解碼本地?cái)z像頭
一開始用ffmpeg做的是視頻流的解析,后面增加了本地視頻文件的支持,到后面發(fā)現(xiàn)ffmpeg也是支持本地?cái)z像頭設(shè)備的,所以本文就來用ffmpeg實(shí)現(xiàn)解碼本地?cái)z像頭功能吧2023-03-03
通過c++11改進(jìn)我們的模式之改進(jìn)命令模式
這篇我要講的是如何使用c++11改進(jìn)命令模式,感興趣的朋友可以看下2013-11-11
C 語(yǔ)言基礎(chǔ)之初識(shí) C 語(yǔ)言常量
C語(yǔ)言中的常量分為以下幾種:字面常量、const修飾的常變量、#define定義的標(biāo)識(shí)符常量等,下面我們將詳細(xì)對(duì)C語(yǔ)言這幾個(gè)常量做介紹,感興趣的小伙伴可以參考一下2021-09-09

