使用Python3和imageio错误保存.tif图像

2024-09-30 18:26:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图在Python3中保存一个经过修改的z-stack.tif文件。这是我的代码,我在其中检查了函数是否按预期工作

#libraries
import imageio as ii

#import initial image
fname='101_nuc1syg1.tif'
adata = ii.volread(fname)

#check to make sure volread works
ii.volsave('temp.tif', adata)

其结果是:

enter image description here

现在,当我尝试使用以下代码执行一个简单的阈值时:

#now doing very simple thresholding
bdata  = adata < adata[0].mean()

bdata = bdata +0

ii.volsave('temp.tif', bdata)

我明白了:

enter image description here

在对tif文件执行图像操作后,您知道如何正确保存该文件吗

编辑:请注意,我可以提取每个堆栈并将它们保存为单独的.png文件,但我更希望将它们保存为单个.tif文件

数据来自:https://www.nature.com/articles/s41467-020-15987-2


Tags: 文件函数代码importstackfnametemppython3
1条回答
网友
1楼 · 发布于 2024-09-30 18:26:13

看起来需要将bdata类型转换为np.uint8,并将结果乘以255

  • 表达式的类型(adata<;adata[0].mean())是np.bool
    常见的图像类型是np.uint8
    (adata < adata[0].mean())转换为np.uint8类型:

     bdata  = (adata < adata[0].mean()).astype(np.uint8)
    
  • 将结果转换为np.uint8时,所有True元素将转换为1,而False元素将转换为0
    乘以255True元素转换为255(白色):

     bdata = bdata * 255
    

完整代码:

import imageio as ii
import numpy as np

#import initial image
fname='101_nuc1syg1.tif'
adata = ii.volread(fname)

#now doing very simple thresholding
bdata  = (adata < adata[0].mean()).astype(np.uint8)

bdata = bdata * 255  # Convert ones to 255 (255 is white color)

ii.volsave('temp.tif', bdata)

注:
我无法测试我的答案-您发布的链接不包含指向图像的链接

相关问题 更多 >