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())

  1. 将读取的图像信息显示出来

上面了解了GDAL获得图像数据信息的方法,接下来就在Qt中对数据信息进行显示

QString strImgInfo;
QString strImgFormat =
poDataset->GetDriver()->GetDescription();
strImgInfo.append(tr(“Descreption: “)+strImgFormat+”\n”);
类似上面这样,Qt中的QString类有类似于向量的功能,可以用append函数再字符串后面添加新的字符串

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

GDAL库——读取图像并提取基本信息相关推荐

  1. GDAL库读取Envisat ASAR数据

    GDAL库本身就可以读取Envisat的图像数据,具体链接为:http://www.gdal.org/frmt_various.html#Envisat. 但是对于ASAR传感器的数据来说,GDAL在 ...

  2. vc使用opencv库 读取图像

    refer to opencv1.0下载 http://www.opencv.org.cn/download/OpenCV_1.0.exe 环境配置 http://www.opencv.org.cn/ ...

  3. python中使用不同库读取图像并相互转换

    最近在训练目标检测的网络,图片在输入网络时,会使用用到 PIL.Image 和 OpenCV 这两个库,这两个库在图像处理方面很多类似的地方,但是它们读取图片的格式却是不一样的,在这里记录一下两种格式 ...

  4. gdal库读取tif影像坐标

    # coding=utf-8 from osgeo import gdal from gdalconst import *def readImage(img_path):data = []# 以只读方 ...

  5. Python gdal库读取tif文件

    from osgeo import gdal # GDAL库主要提供对栅格数据的处理,使用抽象数据模型来解析所支持的数据格式 import filename_cut as fc import matp ...

  6. Linux配置gdal变量环境,基于GDAL库的LINUX环境下的FY-3D和FY-4A遥感数据处理

    王燕婷 摘要 基于GDAL库的功能和其开源.可对栅格空间数据操作的特点,将GDAL与C++语言的完美结合,可极大得发挥其在开发遥感图像处理软件中的优势,并可跨平台应用于不同操作系统下的遥感图像数据处理 ...

  7. GDAL C#读取shp中文属性值乱码问题

    GDAL的C#版本读取shp中,如果属性值中含有中文,读出来有可能是乱码的问题,根据SWIG生成的C#代码调试发现问题所在,在Ogr.cs文件中有这么一个函数,代码如下: internal stati ...

  8. Python 读取图像方式总结

    读取并显示图像 opencv3库 scikit-image库 PIL库 读取图像结果分析 打印图像信息 skimage获取图像信息 PIL获取图像信息 读取并显示图像方法总结 PIL库读取图像 Ope ...

  9. python读取图像数据的一些方法

    工作和学习中设计一个神经网络中经常需要设计一个数据载入器.首先第一件事我们要根据我们的任务要求确定一个数据提供的方法.如我们是一个分类任务,我们就需要读取数据和数据本身对应的标签.     1    ...

最新文章

  1. TensorFlow XLA优化与Memory
  2. golang 映射 map 简介
  3. 英国皇家学会院士樊文飞:把大数据变小,突破企业资源限制
  4. 如何恢复电脑系统桌面
  5. HTTP 2.0 协议
  6. 有道云笔记里几种我觉得比较有用的操作
  7. Jstatd命令 Java Statistics Monitoring Daemon
  8. 无废话C#设计模式系列文章
  9. javascript:访问iframe中的js函数
  10. 2022国产GIS软件排名
  11. 多分支表达-倍数问题
  12. RK3588 调试 phy
  13. 《看聊天记录都学不会C语言?太菜了吧》(6)编程很难吗?差一点就学不会了呢!
  14. 怎么解决idea中yaml无法识别或者飘红?
  15. RFID手持终端PDA如何进行二次开发
  16. 深度学习(十)人脸识别与神经风格迁移
  17. C语言:求最大公约数和最小公倍数
  18. Chatbot-1-笔记
  19. 什么是服务器合租?产权如何分配?
  20. shell判断文件目录或文件是否存在

热门文章

  1. Web前端学习记录(十五)
  2. R语言进行数据的重新编码(recode)
  3. DVWA-XSS(DOM)Low/Medium/High低中高级别
  4. web 横向导出word
  5. 电脑里的计算机无法打字,电脑不能打字,教您电脑不能打字怎么办
  6. [Photoshop]随心所欲的使用磁性套索工具
  7. js获取安卓版本号与iOS版本号的信息
  8. 电脑是怎样上网的 (四) 局域网与服务器响应
  9. 数据结构与算法之删除以x为值的节点的子树
  10. Pro Git电子书的摘要1--思维导图