python读取高光谱数据为数组

1.读取存储格式为.mat的高光谱数据

使用数据:indians_pines 大小:145145像素 波段数:200

将数据读取为shape=(145,145,200)的三维数组

使用的库:

from scipy.io import loadmat

.mat是matlab格式,使用较为方便,可以直接实现。

读取代码:

path_image='Indian-pines/Indian_pines_corrected.mat'
path_label='Indian-pines/Indian_pines_gt.mat'
key_image='indian_pines_corrected'
key_label='indian_pines_gt'

mat = loadmat(path_image)
features = mat[key_image]
features_shape = features.shape
mat_labels = loadmat(path_label)
labels = mat_labels[key_label]

2.读取存储格式为.tif(geotiff)的高光谱数据

使用数据同上

使用的库:

from osgeo import gdal

.tif是是遥感图像中使用较为广泛的格式,我们可以使用gdal库来实现数据读取。

GDAL读取基本思路,顺序读取每一个波段,然后依次添加到指定大小(145,145,200)的三维数组之中。

具体读取代码如下:

#使用GDAL读取tif文件
gdal.UseExceptions()
ds_features=gdal.Open(path_image)
band1 = ds_features.GetRasterBand(1)
band1 = band1.ReadAsArray()
print(band1.shape)
nrows, ncols = band1.shape
bandnum=ds_features.RasterCount
features=np.zeros((nrows,ncols,bandnum),dtype='float32')
features_shape = features.shape
for i in range(1,bandnum+1):
    band=ds_features.GetRasterBand(i)
    band=band.ReadAsArray()
    features[:, :, i-1] = band   #将二维数组写入三维数组中

ds_labels=gdal.Open(path_label)
band1=ds_labels.GetRasterBand(1)
labels=np.array(band1.ReadAsArray())

通过以上方法读取到数据之后,可以对数据继续进行相应的变形处理,用于各种不同分类方法的分析应用了。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空中旋转篮球

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值