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 ...
最新文章
- CENTOS php 7.0 +nginx 环境下 安装yaf框架
- 7年前去搞数据科学、放弃天文学,现在我后悔了
- golang atomic 32位机器问题
- freemarker程序开发
- 线程的简单生产消费模式
- pku 1573 Robot Motion 第一周训练——模拟
- php生成图片验证码代码,PHP生成图片验证码以及点击切换的代码
- java queue使用_使用Java使用Amazon Simple Queue Service
- MATLAB库函数polly2trellis(卷积码生成多项式转网格图描述)的实现过程详解
- Linux——userdel删除用户不完全问题
- Dorado 7 Ajax 交互处理
- DES 加密解密的通俗易懂
- 再谈王垠/王垠—写给清华大学的退学申请
- Cys(Npys)-(Arg)₉,H2N-C(Npys)-RRRRRRRRR-OH
- phalapi可以依赖注入么_[2.11]-核心思想:DI依赖注入-让资源更可控 | PhalApi(π框架) - PHP轻量级开源接口框架 - 接口,从简单开始!...
- 光学显微镜分辨率极限
- EOF:warning: delimited by end-of-file
- Flink基础系列8-Flink on yarn运行wordcount程序
- Mac OS X平台下QuickLook开发教程
- C语言精练教程:连载中
热门文章
- pages转换成html,怎么把pages文稿转为HTML?
- 谷歌「我不是机器人」按钮隐藏了,但你的隐私暴露了
- 14、nginx的正则表达式名称-(server_name为正则表达式)
- issue no route to host 为什么 jmeter 分布式测试,一定要设置 java.rmi.server.hostname--(有效)
- python logger.exception_Python logger.warn方法代码示例
- Python网络编程 之 UDP和TCP
- Zotero如何导出参考文献
- 【测试用例评审标准】
- BufferPool缓存机制
- AutoCAD发展历程回顾