在Python中获取图像的值

2024-06-17 10:53:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个GeoTIFF,我需要得到每个像素的值。在

我这样做:

import gdal
from gdalconst import *

im = gdal.Open("test.tif", GA_ReadOnly)
band = im.GetRasterBand(1)
bandtype = gdal.GetDataTypeName(band.DataType)
scanline = band.ReadRaster( 0, 0, band.XSize, 1,band.XSize, 1, band.DataType)

扫描线包含无法解释的值:

^{pr2}$

我需要把这些数据转换成可读的值。在

换句话说,我需要获取图像的值,以便计算值大于指定阈值的像素数。在


Tags: fromtestimportband像素opengeotiffga
2条回答

请改用ReadAsArray。在

//for float data type
scanline = band.ReadAsArray( 0, 0, band.XSize, band.YSize).astype(numpy.float)

参考网站:link

从gdaltutorial“注意,返回的扫描线是string类型,包含xsize*4字节的原始二进制浮点数据。可以使用标准库中的struct模块将其转换为Python值:“

import struct
tuple_of_floats = struct.unpack('f' * b2.XSize, scanline)

或者,根据您最终要对数据做什么,您可以将其作为数组读入(这为使用numpy进行计算打开了大门)。在

^{pr2}$

相关问题 更多 >