问题描述
我有卫星数据文件 (2),它们以 satdat
和 satdat.hdr
形式提供。
根据提供的答案 here,我尝试了以下操作,但是,它给了我无效的标头格式错误。
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 头文件抛出。 期待任何库打开这种类型的文件,除了 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