首页 > 解决方案 > 在python中将多维数组保存为tiff图像

问题描述

我正在研究印度松树的高光谱图像(HSI)。最初,数据存储在 .mat 文件中,然后使用 loadmat 函数读取了数组中的数据。数组维度为 (145,145,200)。现在,当我试图将此数组保存为 Tiff(.tif) 图像时,事情就无法正常工作。我正在使用 tifffile 包,它是 imwrite 函数来保存图像。但是当我在 QGIS 软件中打开图像时,它只显示一个波段而不是 200 个波段。我在下面附上代码:

import tifffile
import numpy as np
from scipy.io import loadmat

def read_HSI():
  X = loadmat('Indian_pines_corrected.mat')['indian_pines_corrected']#dataset
  y = loadmat('Indian_pines_gt.mat')['indian_pines_gt']#ground truth
  print(f"X shape: {X.shape}\ny shape: {y.shape}")
  return X, y
X, y = read_HSI()

tifffile.imwrite('IndianPines(inputX).tif', X)

如果有任何其他方法可以将 .mat 文件保存为 .tif 格式,请告诉我。先感谢您。

标签: pythonarraysimage-processingmultidimensional-arraytiff

解决方案


我能够使用scikit-image保存它:

import numpy as np
import skimage
data = np.dstack([skimage.data.astronaut(),skimage.data.astronaut()])
data = data.swapaxes(0,2)
data = data.swapaxes(1,2)

import matplotlib.pyplot as plt
plt.imshow(data[4])

在引擎盖下它使用 tiffile 插件:

skimage.io.imsave('test2.tiff', data,photometric='minisblack')

推荐阅读