2017-08-08 193 views
1

我试图从3D数组中获取图像并将其转换为TIF 3D。我正在使用简单的ITK,但它不起作用。我得到这个错误信息:“的方法 'WriteImage',参数1型 'ITK ::简单::图片常量&'Python - 从3D数组写入三维图像

这里是我的代码:

import numpy as np 
import SimpleITK as sitk 

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

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

----- ---------------编辑后续----------------------------

I尝试通过与“GetImageFromArray”工作似乎工作,因为我保持相同的大小,最后我试图保存,但一个错误:

“ITK ::错误:TIFFImageIO(0x43e8740):TIFF支持无符号/符号的字符,无符号/符号的短,而浮动”

这里是我的代码:

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

它没有不喜欢输入格式。你确定它支持从一个值数组写入,并且不需要你先将数组传递给一个图像构造函数? – Uvar

+0

这看起来不像完整的错误消息。你是否跳过零件? – kazemakase

回答

4

它看起来像你的sitk ::图像像素类型不受TIFF ImageIO支持。您需要投射到列出的像素类型之一,即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) 

etc ...

+0

我只是找到了出路! ;) 谢谢! – user3601754