python - 在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 格式,请告诉我。先感谢您。
解决方案
我能够使用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')
推荐阅读
- javascript - nextArrow 和 prevArrow 按钮在 react-slick 中不起作用
- css - SCSS &- 多个字符串选项
- html - 使用图像作为按钮上传文件
- c# - 将用c#编写的asp .net网站扔进ftp
- oauth-2.0 - Keycloak不返回密码过期错误
- python - 在 python2 中生成特定序列的最简单方法是什么?
- python - 参数作为字节传递,我需要它们作为字符串。寻找一种更清洁的方法来实现这一点
- hyperledger-fabric - 如何在没有区块链网络的情况下轻松测试和调试链代码
- python - 创建新列时日期转换不起作用
- git - 在未完成的变基期间恢复丢失的更改