我使用GDAL
來讀取一些圖像文件並希望使用Qt
來顯示它們。到目前爲止,我設法爲我的GDALDataSet
中的每個GDALRasterBand
創建了一個灰度級QImage
,但我不知道如何創建單個RGB圖像。從GDALDataSet創建RBG顏色QImage
這裏是我做了什麼:
#include <gdal_priv.h>
#include <QtGui\QImage>
int main(int argc, char *argv[])
{
GDALAllRegister();
GDALDataset* dataset = static_cast<GDALDataset*>(GDALOpen("path_to_some_image.tif", GA_ReadOnly));
int size_out = 200;
for (int i = 1; i <= 3; ++i)
{
GDALRasterBand* band = dataset->GetRasterBand(i);
std::vector<uchar> band_data(size_out * size_out);
band->RasterIO(GF_Read, 0, 0, size_out, size_out, band_data.data(), size_out, size_out, GDT_Byte, 0, 0);
QImage band_image(band_data.data(), size_out, size_out, QImage::Format_Grayscale8);
band_image.save(QString("C:\\band_%1.png").arg(i));
}
return 0;
}
如何讀取數據,所以我可以創建一個單一的RGB QImage
?
我希望我可以逃脫不使用OpenCV的,但多了一些嘗試後,我用您的解決方案(以一點調整,以適應16位圖像)。 – undu
否則,您可以遍歷柵格帶,在圖像的每一行調用RasterIO。然後,遍歷行中的每一列,您可以在QImage中設置像素值。這並非不合理,但絕對不是最快的。 – msmith81886