2017-08-22 270 views
-1

我試圖運行下面的示例作爲SimpleElastix庫的一部分:不能寫圖像SimpleElastix(蟒蛇)

import SimpleITK as sitk 

elastixImageFilter = sitk.ElastixImageFilter() 
elastixImageFilter.SetFixedImage(sitk.ReadImage('1.jpg', sitk.sitkFloat32)) 
elastixImageFilter.SetMovingImage(sitk.ReadImage('2.jpg', sitk.sitkFloat32)) 
elastixImageFilter.SetParameterMap(sitk.GetDefaultParameterMap('rigid')) 
elastixImageFilter.Execute() 
sitk.WriteImage(elastixImageFilter.GetResultImage()) 

當我試圖運行上面的代碼,我得到以下錯誤(我展示了部分輸出):

Traceback (most recent call last): 
    File "rigid_transform.py", line 8, in <module> 
    sitk.WriteImage(elastixImageFilter.GetResultImage()) 
    File "/usr/local/lib/python2.7/dist-packages/SimpleElastix-1.0.1rc1.dev331+gd756f-py2.7-linux-x86_64.egg/SimpleITK/SimpleITK.py", line 8015, in WriteImage 
    return _SimpleITK.WriteImage(*args) 
NotImplementedError: Wrong number or type of arguments for overloaded function 'WriteImage'. 
    Possible C/C++ prototypes are: 
    itk::simple::WriteImage(itk::simple::Image const &,std::string const &,bool) 
    itk::simple::WriteImage(itk::simple::Image const &,std::vector< std::string,std::allocator<std::string> > const &,bool) 

我該如何解決這個問題?

編輯:按@Dženan的答案,我得到了以下內容:

Traceback (most recent call last): 
    File "rigid_transform.py", line 8, in <module> 
    sitk.WriteImage(elastixImageFilter.GetResultImage(), 'result.jpg') 
    File "/usr/local/lib/python2.7/dist-packages/SimpleElastix-1.0.1rc1.dev331+gd756f-py2.7-linux-x86_64.egg/SimpleITK/SimpleITK.py", line 8015, in WriteImage 
    return _SimpleITK.WriteImage(*args) 
RuntimeError: Exception thrown in SimpleITK WriteImage: /home/me/Desktop/SimpleElastix/build/ITK/Modules/IO/JPEG/src/itkJPEGImageIO.cxx:454: 
itk::ERROR: JPEGImageIO(0x1a5daa0): JPEG supports unsigned char/int only 

感謝。

+0

這個問題現在看來是https://stackoverflow.com/的副本問題/ 45570341/python-write-a-three-dimensional-image-from-3D-array/45571309?noredirect = 1#comment78102006_45571309 – blowekamp

回答

1

您缺少文件名。試試這個:

sitk.WriteImage(elastixImageFilter.GetResultImage(), 'result.jpg')

編輯:你可以嘗試其他的文件擴展名:result.pngresult.tifresult.nrrdresult.mha

+0

感謝您的親切回答。請在問題中查看我的編輯。 – Simplicity

+0

你是對的,使用其他文件格式解決了這個問題。例如PNG不起作用,但其他工作。我目前正在嘗試「nii」。非常感謝。 – Simplicity

2

如C++原型中所列,您缺少第二個參數,即文件名。

+0

感謝您的好意。請在問題中查看我的編輯。 – Simplicity