首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从python中的各个tiff创建tiff堆栈

从python中的各个tiff创建tiff堆栈
EN

Stack Overflow用户
提问于 2017-11-12 11:08:51
回答 1查看 6.2K关注 0票数 1

我正在根据下面的示例创建不同大小的tiff堆栈:http://www.bioimgtutorials.com/2016/08/03/creating-a-z-stack-in-python/

可以在这里下载tif文件的示例:

我有一个文件夹,里面有5个tiff文件。我希望将它们堆叠起来,以便能够在imageJ中打开它们,使它们看起来像这样:

这适用于以下代码:

代码语言:javascript
复制
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图像的示例:

代码语言:javascript
复制
   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])

然后我得到了这样的结果:

在尝试堆叠文件夹的第三张图片时,它们会被组合起来!

代码语言:javascript
复制
   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])

我在代码中哪里出错了,所以它只需要在一个大小为3、4或5的多维堆栈中添加单独的tiff?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-13 18:14:48

指定图像数据(photometric='minisblack')的颜色空间,否则tifffile插件将从输入数组的形状猜测它。

这是一个更短的版本,直接使用tifffile:

代码语言:javascript
复制
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
        )
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47248065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档