我在处理 .tif 文件时遇到一点问题。我确信这只是一个我无法解决的小问题(请记住,我是一个相对较新的程序员)。
基本上:我准备了大小为 64x64xn(n 到 1000)的 .tif 文件。该图像只是一个包含所有这些切片的文件。我想将图像加载到(多维)numpy 数组中。我试过:
from PIL import Image as pilimage
file_path=(D:\luca\test\test.tif)
print("The selected stack is a .tif")
dataset = pilimage(file_path)
tiffarray = np.array(dataset)
expim = tiffarray.astype(np.double);
print(expim.shape)
和其他东西(比如 tifffile)。我似乎只能读取堆栈的第一部分。 “expim”是否可能包含保存在 tiff 堆栈中的所有信息?
最佳答案
我不确定是否有办法让 PIL 打开 tiff 堆栈的多个切片。
但是,如果您不一定要使用 PIL,则可以使用 scikit-image 作为替代方案。 ,默认情况下从 tiff 堆栈打开多个切片。下面是一些示例代码,说明如何使用 scikit-image 将 tiff 堆栈加载到 Numpy 数组中:
>>> from skimage import io
>>> im = io.imread('an_image.tif')
>>> print(im.shape)
(2, 64, 64)
请注意,imread 函数将图像直接加载到 Numpy 数组中。此外,结果数组的维度是有序的 (z, y, x),其中 z 表示深度,y 表示高度,x 表示宽度。因此,要从堆栈中获取单个切片,您所要做的就是:
>>> print(im[1].shape)
(64, 64)
关于python - 使用 python 在 numpy 数组中加载 tiff 堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37722139/