遥感影像的分块读取和显示

本文介绍了如何利用GDAL库处理大尺寸遥感影像,通过RasterIO函数进行分块读取,StretchDIBits函数进行显示。在处理1G左右的航天影像时,这种分块策略能有效降低内存占用,实现了滑动条控制的影像显示。文中还详细解释了这两个函数的关键参数设置,并展示了分块显示的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前弄了一些遥感影像读取的工作,但是主要是针对航空影像,所以数据量相对较小,利用opencv基本可以搞定。最近需要处理的1G左右的航天影像,所以之前的方法基本不适用,直接内存的话,我的小笔记本不可实现,所以弄了几天利用GDAL将影像分块读取和显示,现在将几天的工作记录一下,给后来者尽一点微薄之力,也给以后遇到类似的问题留点资料。可能有不完善的地方,读者可以留言批评指正。
GDAL就不用解释了吧~
影像的分块读取和显示,根据字面来看,主要包括:分块读取和显示,其玄机就在两个函数里面:RasterIO()和StretchDIBits()(这里说明一下,RasterIO我用的是GDALRasterBand中的那个,我用StretchDIBits来显示,而没有采用bitblt,主要是因为效率问题)

在这里我的读取和显示影像的思路是:利用一个函数将影像分块读取封装起来,每次调用这个函数只读取指定区域的影像进入内存,并且是在绘图的函数中执行读取,在下一次读取之前,将上一次读取所占用的内存释放。所以,按照这个思路,一张无论多大的影像,其占用内存的大小只是,你进行分块后影像的大小和需要显示的大小。

先说一下RasterIO,如何分块读取,有关这个函数的介绍,如下:

RasterIO(
GDALRWFlag eRWFlag,                  //读or写标记 
int nXOff,                                              //从哪里开始读
int nYOf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值