2017-08-08 194 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