我知道如何在C++中实现itk图像和SimpleITK图像之间的转换,这是SimpleITK(Examples/ITKIntegration.cxx)中的一个示例。如何在Python中实现itk图像和SimpleITK图像之间的转换?
//
// Extract the itk image from the SimpleITK image
//
InternalImageType::Pointer itkImage =
dynamic_cast <InternalImageType*>(image.GetITKBase());
...
//
// Return to the simpleITK setting by making a SimpleITK image using the
// output of the blur filter.
//
sitk::Image blurredImage = sitk::Image(blurFilter->GetOutput());
但是在Python,当我使用其中itkImage是itkImage “sitk.Image(itkImage)”,我得到一个错误“这个= _SimpleITK.new_Image(*参数) NotImplementedError:错误数量或类型的重载函数'new_Image'“的参数。而在Python中,不可能像C++中的“dynamic_cast”那样转换类型。
有一种可能的解决方案,它使用PyBuffer将itkImage转换为numpy数组,然后使用SimpleITK将数组最终转换为SimpleITK图像。但是我无法构建itkPyBuffer。我认为这种方法不是直接解决这个问题。
你能帮我把C++代码转换成可用的Python代码吗?谢谢。
谢谢你的回答。我已经避免通过将名为DeVIDE(http://www.ohloh.net/p/DeVIDE)的所有关于itk的文件复制到python itk目录中,因为它在DeVIDE中具有“PyBuffer”并且DeVIDE本身就是易于安装。我的解决方案听起来很奇怪,但它工作。 – ghk