代码之家  ›  专栏  ›  技术社区  ›  Simplicity

无法编写图像SimpleElastix(Python)

  •  0
  • Simplicity  · 技术社区  · 9 年前

    我试图运行以下示例作为 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)
    

    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
    

    谢谢

    2 回复  |  直到 9 年前
        1
  •  2
  •   blowekamp    9 年前

    如c++原型中所列,您缺少第二个参数,即文件名。

        2
  •  1
  •   Dženan    9 年前

    您缺少文件名。试试这个:

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

    编辑:您可以尝试其他文件扩展名: result.png , result.tif , result.nrrd , result.mha

    推荐文章