【问题标题】:Saving a multidimensional array as tiff image in python在python中将多维数组保存为tiff图像
【发布时间】:2021-03-13 05:15:01
【问题描述】:

我正在研究印度松树的高光谱图像 (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 格式,请告诉我。 提前谢谢你。

【问题讨论】:

  • 如果X 的最后一个维度包含带,请尝试imwrite(filename, X, planarconfig='contig')
  • 谢谢我会做的

标签: python arrays image-processing multidimensional-array tiff


【解决方案1】:

我可以使用 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')

【讨论】:

    猜你喜欢
    • 2022-12-22
    • 2018-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-01
    • 1970-01-01
    • 2020-12-24
    • 2015-05-21
    相关资源
    最近更新 更多