【发布时间】:2014-01-27 09:17:53
【问题描述】:
我知道如何在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 中,当我使用其中 itkImage 是 itkImage 的“sitk.Image(itkImage)”时,出现错误“this = _SimpleITK.new_Image(*args) NotImplementedError: 重载函数“new_Image”的参数数量或类型错误。而在 python 中,不可能在 C++ 中转换类型如“dynamic_cast”。
对此有一种可能的解决方案,即使用 PyBuffer 将 itkImage 转换为 numpy 数组,然后使用 SimpleITK 将数组最终转换为 SimpleITK 图像。但我未能构建 itkPyBuffer。而且我认为这种方法并不能直接解决这个问题。
你能帮我把 C++ 代码转换成可用的 python 代码吗?谢谢。
【问题讨论】: