我知道在C ++中实现itk图像和SimpleITK图像之间转换的方法,这是SimpleITK中的一个例子(Examples / ITKIntegration.cxx)。
//
// 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中,当我使用“sitk.Image(itkImage)”时itkImage是一个itkImage,我得到一个错误“this = _SimpleITK.new_Image(* args) NotImplementedError:重载函数'new_Image'的参数数目或类型错误。在python中,不可能在C ++中转换类似“dynamic_cast”的类型。
有一个可能的解决方案,它使用PyBuffer将itkImage转换为numpy数组,然后使用SimpleITK最终将数组转换为SimpleITK图像。但我在构建itkPyBuffer时失败了。我认为这种方法不能直接解决这个问题。
你能帮我把C ++代码转换成可用的python代码吗?谢谢。
答案 0 :(得分:2)
这是 ITK 和 SimpleITK 图像之间的转换器: https://github.com/gregpost/itk-SimpleITK-Converter
答案 1 :(得分:0)
我可以复制一个SimpleITK图像无法在Python中从itk图像中实例化。我没有找到解决PyBuffer的方法,所以你可能必须编译。以下是有关可能对您有所帮助的小错误的说明:https://pypi.python.org/pypi/MedPy/0.1.0