Python - 从 3D 数组写入三维图像

标签 python numpy itk simpleitk

我正在尝试从 3D 阵列获取图像并将其转换为 TIF 3D。我正在使用简单的 ITK,但它不起作用。我收到此错误消息:'in method 'WriteImage', argument 1 of type 'itk::simple::Image const &'

这是我的代码:

import numpy as np
import SimpleITK as sitk

test = np.ones((20,20,20))

sitk.WriteImage(test,'test.tif')

-------------------- 稍后编辑------------------------ ---

我尝试使用“GetImageFromArray”,它似乎有效,因为我保持相同的大小,最后我尝试保存但出现错误:

“itk::ERROR: TIFFImageIO(0x43e8740): TIFF 支持无符号/有符号字符、无符号/有符号短整数和 float ”

这是我的代码:

test2 = sitk.GetImageFromArray(test)
test2.GetSize()
(20, 20, 20)
sitk.WriteImage(test2, "prout.tif")

最佳答案

看起来 TIFF ImageIO 不支持您的 sitk::Image 像素类型。您需要转换为列出的其中一种像素类型,即 sitk.UInt8sitk.UInt16sitk.Float32

您可以检查当前的像素类型是什么,例如:

print("pixel id: {0} ({2})".format(test2.GetPixelID(), test2.GetPixelIDTypeAsString())

然后您可以转换图像的像素类型:

test2 = sitk.Cast(test2, sitk.Float32)

test2 = sitk.Cast(test2, sitk.UInt16)

等...

关于Python - 从 3D 数组写入三维图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45570341/

相关文章:

python - 在 BLOB 字段中保存字节字符串的问题(python,mysqldb)

python - 如何替换 numpy 中的轴参数

C++ MSVS 项目内链接器错误 LNK2019 - 声明定义不匹配?

c++ - ITK更新函数

python - Pandas 垂直添加单个细胞

python - 添加一条边时使boost图只包含两个顶点

python - 如何摆脱 pandas 将 excel 表中的大数字转换为指数?

python - 如何在对角线上设置值并在所有行上重复?

python - 与 numpy.gradient 的非均匀间距

python-3.x - 使用 CMake 为 Python 3 构建 SimpleITK