python - 使用 python 在 numpy 数组中加载 tiff 堆栈

标签 python arrays image numpy tiff

我在处理 .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/

相关文章:

python - 将 python 服务作为后台服务运行

javascript - 如何停止循环以仅获取第一个数组的内容?

C++从ifstream中拆分字符串并将它们放在单独的数组中

c++添加操作菜单

JavaScript 输出到 innerHTML chop 页面下背景图片

python - 在 python 中展平列表

Python打印字符串对齐

python - 在 Matplotlib 中使用子图时如何控制颜色条位置

c++将图像发送到打印机,(PRINT)

javascript - img 302 重定向时是否会调用 'load' 事件?如何对此进行测试?