Python:如何读取.hdr文件自带的高光谱卫星数据

Python: How to read hyperspectral satellite data that comes with a .hdr file

我有卫星数据文件 (2) satdatsatdat.hdr。 根据提供的答案 here,我尝试了以下操作,但是,它给了我一个无效的 header 格式错误。

import imageio
from pathlib import Path

imageio.plugins.freeimage.download()

datapath = Path(r'./sat_data/')

filename = str(datapath / 'satdat.hdr')    # I even tried not using this extension
im = imageio.imread(filename, format='HDR-FI')
print(im.shape)

我期待这会将数据读入 numpy 数组;而是将错误作为无效的 ENVI header 文件抛出。 期待任何库打开这种类型的文件,除了 OpenCV(由于我使用的计算环境的某些限制。)

经过反复试验,以下方法对我有用:

import spectral.io.envi as envi
from pathlib import Path

datapath = Path(r'./sat_data/')

header_file = str(datapath / 'satdat.hdr')
spectral_file = str(datapath / 'satdat')

numpy_ndarr = envi.open(header_file, spectral_file)

img = numpy_ndarr.read_bands([10, 11, 12])  # select the bands

# Here, img is an numpy nd-array

print(img.shape)    # returns (100, 100, 3)

我希望其他人会觉得这很有用。可以找到光谱库here