我正在尝试从3D阵列获取图像并将其转换为TIF 3D。我正在使用简单的ITK,但是它不起作用。我收到此错误消息:'在方法'WriteImage'中,类型为'itk :: simple :: Image const&'的参数1

这是我的代码:

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支持无符号/有符号字符,无符号/有符号短字符和浮点数”

这是我的代码:

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

最佳答案

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

您可以使用以下方法检查当前的像素类型:

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


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

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


要么

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


等等...

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

10-11 18:59