使用 Python3 和 imageio 错误地保存 .tif 图像
Saving .tif Image Incorrectly using Python3 and imageio
我正在尝试在 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)
结果是:
现在,当我尝试做一个简单的阈值时,使用以下代码:
#now doing very simple thresholding
bdata = adata < adata[0].mean()
bdata = bdata +0
ii.volsave('temp.tif', bdata)
我明白了:
知道如何在执行图像操作后正确保存 tif 文件吗?
编辑:请注意,我能够提取每个堆栈并将它们保存为单独的 .png 文件,但我更愿意将它们保存为单个 .tif 文件。
看来您需要将 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
。
乘以 255
将 True
元素转换为 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)
注:
我无法测试我的答案 - 您发布的 link 不包含图像的 link。
我正在尝试在 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)
结果是:
现在,当我尝试做一个简单的阈值时,使用以下代码:
#now doing very simple thresholding
bdata = adata < adata[0].mean()
bdata = bdata +0
ii.volsave('temp.tif', bdata)
我明白了:
知道如何在执行图像操作后正确保存 tif 文件吗?
编辑:请注意,我能够提取每个堆栈并将它们保存为单独的 .png 文件,但我更愿意将它们保存为单个 .tif 文件。
看来您需要将 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
。
乘以255
将True
元素转换为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)
注:
我无法测试我的答案 - 您发布的 link 不包含图像的 link。