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語言驅(qū)動開發(fā)之內(nèi)核通過PEB獲取進程參數(shù)
PEB結(jié)構(gòu)(Process Envirorment Block Structure)其中文名是進程環(huán)境塊信息。本文將通過PEB實現(xiàn)獲取進程參數(shù),感興趣的小伙伴可以了解一下2022-10-10
Qt音視頻開發(fā)之利用ffmpeg實現(xiàn)解碼本地攝像頭
一開始用ffmpeg做的是視頻流的解析,后面增加了本地視頻文件的支持,到后面發(fā)現(xiàn)ffmpeg也是支持本地攝像頭設(shè)備的,所以本文就來用ffmpeg實現(xiàn)解碼本地攝像頭功能吧2023-03-03

