Qt利用ImageWatch實現(xiàn)圖片查看功能
使用Qt實現(xiàn)ImageWatch圖片查看功能,圖片放大可見RGB像素值。支持打開大圖片,即打開一個幾百MB甚至幾GB的大圖片。
1、什么是ImageWatch
Visual Studio有專門針對OpenCV開發(fā)的插件,名叫ImageWatch,圖片放大之后可以查看RGB的像素值。
Image Watch 2019 - Visual Studio Marketplace
2、得空自己用Qt仿照實現(xiàn)了一下這個功能:
純粹Qt寫的,沒有使用Halcon和OpenCV庫。
(1)打開8位的灰度圖
鼠標滾輪放大之后,可以查看灰度值;鼠標中鍵下壓可以拖動圖片;
(2)打開24位的彩色圖
鼠標放大之后可以查看RGB三通道的數(shù)值;鼠標中鍵下壓可以拖動圖片;
3、怎么使用Qt打開一個幾百MB甚至幾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); //一次性定時器 QTimer::singleShot(10, this, [=]() { slotViewZoomAuto(); }); return true; }
到此這篇關(guān)于Qt利用ImageWatch實現(xiàn)圖片查看功能的文章就介紹到這了,更多相關(guān)Qt ImageWatch圖片查看內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++11/14如何使用typedef和using定義類型別名和別名模版
這篇文章主要介紹了C++11/14如何使用typedef和using定義類型別名和別名模版2023-04-04C/C++ int數(shù)與多枚舉值互轉(zhuǎn)的實現(xiàn)
在C/C++在C/C++的開發(fā)中經(jīng)常會遇到各種數(shù)據(jù)類型互轉(zhuǎn)的情況,本文主要介紹了C/C++ int數(shù)與多枚舉值互轉(zhuǎn)的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2021-08-08c++ 如何在libuv中實現(xiàn)tcp服務(wù)器
這篇文章主要介紹了c++ 如何在libuv中實現(xiàn)tcp服務(wù)器,幫助大家更好的理解和使用libuv,感興趣的朋友可以了解下2021-02-02C++ 中pragma once 與 #ifndef _XXX_H_ #define _XXX_H_的區(qū)別
這篇文章主要介紹了C++ 中pragma once 與 #ifndef _XXX_H_ #define _XXX_H_的區(qū)別的相關(guān)資料,需要的朋友可以參考下2017-04-04