GDAL庫——讀取圖像並提取基本信息


GDAL庫是一個跨平台的柵格地理數據格式庫,包括讀取、寫入、轉換、處理各種柵格數據格式(有些特定的格式對一些操作如寫入等不支持)。它使用了一個單一的抽象數據模型就支持了大多數的柵格數據。這里有GDAL庫支持的格式:http://www.gdal.org/formats_list.html

注:本文在Qt開發環境下使用GDAL庫。

在Qt中使用GDAL庫時,除了要加gdal_priv.h頭文件外,還需要在xxx.pro文件內加上LIBS += -lgdal ,文件用可編輯的文檔打開。

使用GDAL時首先對文件格式進行注冊,這里我們對所有支持的文件安格式進行注冊:GDALAllRegister()

注冊后用數據集對象指向打開的數據文件,就實現了數據的讀取,如下:

    GDALAllRegister();    
    GDALDataset *poDataset;
QString filename;
filename=QFileDialog::getOpenFileName(this,
tr("Choose Images"),
tr("All Fles (*.*)"));
//Open the image
QByteArray ba = filename.toLatin1();
poDataset = (GDALDataset*) GDALOpen( ba.data(),GA_ReadOnly );

注意上面還需要將QString轉化為char*類型,以保證函數參數類型一致。

1.獲取圖像的基本信息

采用GDAL讀取圖像成功后,可以獲取圖像的一些基本信息,如下:

描述信息:const char*  GDALDataset::GetDriver()->GetDescription(),通常是圖像的格式

圖像大小:  圖像寬度  int  GDALDataset::GetRasterXSize()

                   圖像高度  int   GDALDataset::GetRasterYSize()

波段數:int   GDALDataset::GetRasterCount()     波段數即圖像每個像素點所含的顏色種類,物理中的光學中學過顏色就是某頻率的光波。波段少則一個,多則很多個,在遙感影象中波段通常有多個。

投影信息:GDALDataset::GetProjectionRef()    有的圖像沒有投影信息,不如一般的JPG、BMP格式圖像。

地理坐標信息:double adfGeoTransform[6]   

                        GDALDataset::GetGeoTransform(adfGeoTransform)

                 地理坐標信息是一個含6個double型數據的數組,adfGeoTransform[1]和adfGeoTransform[5]表示東西和南北方向一個像素對應的距離,adfGeoTransform[0]和adfGeoTransform[3]表示左上角的坐標。

波段信息:數據集中重要的信息,有波段尺寸、數據類型、顏色信息等。

           獲取波段的方法: GDALRasterBand *poBand;

                                 poBand = poDataset->GetRasterBand(i)     poBand為指向第i個波段的指針

波段尺寸:int   poBand->GetXSize()

                 int   poBand->GetYSize()

數據類型:const char*   GDALGetDataTypeName(poBand->GetRasterDataType())    

顏色信息:const char*   GDALGetColorInterpretationName(poBand->GetColorInterpretation())

2. 將讀取的圖像信息顯示出來

上面了解了GDAL獲得圖像數據信息的方法,接下來就在Qt中對數據信息進行顯示

QString strImgInfo;
QString strImgFormat =
poDataset->GetDriver()->GetDescription();
strImgInfo.append(tr("Descreption: ")+strImgFormat+"\n");

類似上面這樣,Qt中的QString類有類似於向量的功能,可以用append函數再字符串后面添加新的字符串

信息獲取完后顯示:ui->label->setText(strImgInfo);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM