从 python 中的各个 tiff 创建 tiff 堆栈
Creating a tiff stack from individual tiffs in python
我正在根据此处找到的示例创建不同大小的 tiff 堆栈:
http://www.bioimgtutorials.com/2016/08/03/creating-a-z-stack-in-python/
可在此处下载 tif 文件示例:
nucleus
我有一个文件夹,里面有 5 个 tiff 文件。
我想堆叠它们以便能够在 imageJ 中打开它们,使它们看起来像这样:
这适用于以下代码:
from skimage import io
import numpy as np
import os
dir = 'C:/Users/Mich/Desktop/tiff stack/'
listfiles =[]
for img_files in os.listdir(dir):
if img_files.endswith(".tif") :
listfiles.append(img_files)
first_image = io.imread(dir+listfiles[0])
io.imshow(first_image)
first_image.shape
stack = np.zeros((5,first_image.shape[0],first_image.shape[1]),np.uint8)
for n in range(0,5):
stack[n,:,:]= io.imread(dir+listfiles[n])
path_results = 'C:/Users/Mich/Desktop/'
io.imsave(path_results+'Stack.tif' ,stack)
当我只想堆叠前4个或前3个时,问题就来了。
包含 4 张 tiff 图像的示例:
stack=np.zeros((4,first_image.shape[0],first_image.shape[1]),np.uint8)
for n in range(0,4):
stack[n,:,:]= io.imread(dir+listfiles[n])
然后我得到这样的结果:
在尝试堆叠文件夹的前 3 张图像时,它们合并了!
stack=np.zeros((3,first_image.shape[0],first_image.shape[1]),np.uint8)
for n in range(0,3):
stack[n,:,:]= io.imread(dir+listfiles[n])
我的代码哪里错了,以至于它只是将单个 tiff 添加到大小为 3、4 或 5 的多维堆栈中?
指定图像数据的颜色space(photometric='minisblack'
),否则tifffile插件会根据输入数组的形状来猜测。
这是直接使用 tifffile 的较短版本:
import glob
import tifffile
with tifffile.TiffWriter('Stack.tif') as stack:
for filename in glob.glob('nucleus/*.tif'):
stack.save(
tifffile.imread(filename),
photometric='minisblack',
contiguous=True
)
我正在根据此处找到的示例创建不同大小的 tiff 堆栈: http://www.bioimgtutorials.com/2016/08/03/creating-a-z-stack-in-python/
可在此处下载 tif 文件示例: nucleus
我有一个文件夹,里面有 5 个 tiff 文件。 我想堆叠它们以便能够在 imageJ 中打开它们,使它们看起来像这样:
这适用于以下代码:
from skimage import io
import numpy as np
import os
dir = 'C:/Users/Mich/Desktop/tiff stack/'
listfiles =[]
for img_files in os.listdir(dir):
if img_files.endswith(".tif") :
listfiles.append(img_files)
first_image = io.imread(dir+listfiles[0])
io.imshow(first_image)
first_image.shape
stack = np.zeros((5,first_image.shape[0],first_image.shape[1]),np.uint8)
for n in range(0,5):
stack[n,:,:]= io.imread(dir+listfiles[n])
path_results = 'C:/Users/Mich/Desktop/'
io.imsave(path_results+'Stack.tif' ,stack)
当我只想堆叠前4个或前3个时,问题就来了。
包含 4 张 tiff 图像的示例:
stack=np.zeros((4,first_image.shape[0],first_image.shape[1]),np.uint8)
for n in range(0,4):
stack[n,:,:]= io.imread(dir+listfiles[n])
然后我得到这样的结果:
在尝试堆叠文件夹的前 3 张图像时,它们合并了!
stack=np.zeros((3,first_image.shape[0],first_image.shape[1]),np.uint8)
for n in range(0,3):
stack[n,:,:]= io.imread(dir+listfiles[n])
我的代码哪里错了,以至于它只是将单个 tiff 添加到大小为 3、4 或 5 的多维堆栈中?
指定图像数据的颜色space(photometric='minisblack'
),否则tifffile插件会根据输入数组的形状来猜测。
这是直接使用 tifffile 的较短版本:
import glob
import tifffile
with tifffile.TiffWriter('Stack.tif') as stack:
for filename in glob.glob('nucleus/*.tif'):
stack.save(
tifffile.imread(filename),
photometric='minisblack',
contiguous=True
)