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())
- 将读取的图像信息显示出来
上面了解了GDAL获得图像数据信息的方法,接下来就在Qt中对数据信息进行显示
QString strImgInfo;
QString strImgFormat =
poDataset->GetDriver()->GetDescription();
strImgInfo.append(tr(“Descreption: “)+strImgFormat+”\n”);
类似上面这样,Qt中的QString类有类似于向量的功能,可以用append函数再字符串后面添加新的字符串
信息获取完后显示:ui->label->setText(strImgInfo);
GDAL库——读取图像并提取基本信息相关推荐
- GDAL库读取Envisat ASAR数据
GDAL库本身就可以读取Envisat的图像数据,具体链接为:http://www.gdal.org/frmt_various.html#Envisat. 但是对于ASAR传感器的数据来说,GDAL在 ...
- vc使用opencv库 读取图像
refer to opencv1.0下载 http://www.opencv.org.cn/download/OpenCV_1.0.exe 环境配置 http://www.opencv.org.cn/ ...
- python中使用不同库读取图像并相互转换
最近在训练目标检测的网络,图片在输入网络时,会使用用到 PIL.Image 和 OpenCV 这两个库,这两个库在图像处理方面很多类似的地方,但是它们读取图片的格式却是不一样的,在这里记录一下两种格式 ...
- gdal库读取tif影像坐标
# coding=utf-8 from osgeo import gdal from gdalconst import *def readImage(img_path):data = []# 以只读方 ...
- Python gdal库读取tif文件
from osgeo import gdal # GDAL库主要提供对栅格数据的处理,使用抽象数据模型来解析所支持的数据格式 import filename_cut as fc import matp ...
- Linux配置gdal变量环境,基于GDAL库的LINUX环境下的FY-3D和FY-4A遥感数据处理
王燕婷 摘要 基于GDAL库的功能和其开源.可对栅格空间数据操作的特点,将GDAL与C++语言的完美结合,可极大得发挥其在开发遥感图像处理软件中的优势,并可跨平台应用于不同操作系统下的遥感图像数据处理 ...
- GDAL C#读取shp中文属性值乱码问题
GDAL的C#版本读取shp中,如果属性值中含有中文,读出来有可能是乱码的问题,根据SWIG生成的C#代码调试发现问题所在,在Ogr.cs文件中有这么一个函数,代码如下: internal stati ...
- Python 读取图像方式总结
读取并显示图像 opencv3库 scikit-image库 PIL库 读取图像结果分析 打印图像信息 skimage获取图像信息 PIL获取图像信息 读取并显示图像方法总结 PIL库读取图像 Ope ...
- python读取图像数据的一些方法
工作和学习中设计一个神经网络中经常需要设计一个数据载入器.首先第一件事我们要根据我们的任务要求确定一个数据提供的方法.如我们是一个分类任务,我们就需要读取数据和数据本身对应的标签. 1 ...
最新文章
- TensorFlow XLA优化与Memory
- golang 映射 map 简介
- 英国皇家学会院士樊文飞:把大数据变小,突破企业资源限制
- 如何恢复电脑系统桌面
- HTTP 2.0 协议
- 有道云笔记里几种我觉得比较有用的操作
- Jstatd命令 Java Statistics Monitoring Daemon
- 无废话C#设计模式系列文章
- javascript:访问iframe中的js函数
- 2022国产GIS软件排名
- 多分支表达-倍数问题
- RK3588 调试 phy
- 《看聊天记录都学不会C语言?太菜了吧》(6)编程很难吗?差一点就学不会了呢!
- 怎么解决idea中yaml无法识别或者飘红?
- RFID手持终端PDA如何进行二次开发
- 深度学习(十)人脸识别与神经风格迁移
- C语言:求最大公约数和最小公倍数
- Chatbot-1-笔记
- 什么是服务器合租?产权如何分配?
- shell判断文件目录或文件是否存在