繁体   English   中英

在Python中按块加载图像以进行GDAL处理

[英]Load image by chunks in Python for GDAL processing

我需要加载图像*.tif以便在GDAL中对其进行处理。 我使用以下代码:

data = gdal.Open("a.tif", gdal.GA_ReadOnly)
img = data.ReadAsArray()

在小图像(〜10Mb)上都可以正常工作。 但是,当我尝试加载更大的图像(〜1Gb)时,它开始使用大量内存(〜15Gb RAM)。 如何按块加载此图像以进行顺序处理?

谢谢!

ReadAsArray()具有一些可选参数来读取图像的某些部分。

ReadAsArray(x_off, y_off, x_size, y_size)

完整代码:

import gdal
ds = gdal.Open('input.tif', gdal.GA_ReadOnly)
rb = ds.GetRasterBand(1)
xsize = rb.XSize
ysize = rb.YSize
ystep = ysize / 10
yresidual = ysize - (ystep * 10)

for i in range(10):
    if i != 9:
        img_part = rb.ReadAsArray(0, ystep * i, xsize, ystep)
    else:
        img_part = rb.ReadAsArray(0, ystep * i, xsize, ystep + yresidual)
    # do something with img_part

ds = None

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM