如何在Python中实现itk图像和SimpleTk图像之间的转换? P.>我知道在C++中实现ITK图像和SimuleIK图像之间转换的方法,这是SimeLITK(实例/ iTimeTeGrace.CXX)中的一个例子。 // //从SimpleTk图像中提取itk图像 // InternalImageType::指针itkImage= 动态_cast(image.GetITKBase()); ... // //通过使用 //模糊过滤器的输出。 // sitk::Image blurredImage=sitk::Image(blurFilter->GetOutput());

如何在Python中实现itk图像和SimpleTk图像之间的转换? P.>我知道在C++中实现ITK图像和SimuleIK图像之间转换的方法,这是SimeLITK(实例/ iTimeTeGrace.CXX)中的一个例子。 // //从SimpleTk图像中提取itk图像 // InternalImageType::指针itkImage= 动态_cast(image.GetITKBase()); ... // //通过使用 //模糊过滤器的输出。 // sitk::Image blurredImage=sitk::Image(blurFilter->GetOutput());,python,c++,numpy,itk,Python,C++,Numpy,Itk,但是在Python中,当我使用“sitk.Image(itkImage)”,其中itkImage是一个itkImage时,我得到了一个错误“this=\u simpletk.new\u Image(*args) NotImplementedError:重载函数“new_Image”的参数数量或类型错误。在Python中,不可能在C++中转换“动态转换”类型。 有一种可能的解决方案,它使用PyBuffer将itkImage转换为numpy数组,然后使用simpletk将数组最终转换为simplet

但是在Python中,当我使用“sitk.Image(itkImage)”,其中itkImage是一个itkImage时,我得到了一个错误“this=\u simpletk.new\u Image(*args) NotImplementedError:重载函数“new_Image”的参数数量或类型错误。在Python中,不可能在C++中转换“动态转换”类型。

有一种可能的解决方案,它使用PyBuffer将itkImage转换为numpy数组,然后使用simpletk将数组最终转换为simpletk图像。但我没能建造itkPyBuffer。我认为这种方法不能直接解决这个问题


<>你能帮我把C++代码转换成可用的Python代码吗?谢谢。

我可以重复,不能从itk映像用Python实例化SimpleTk映像。我没有找到一种绕过PyBuffer的方法,所以您可能最终不得不编译。下面是一个可能对您有所帮助的小错误的描述:

这是ITK和SimpleTk映像之间的转换器:

谢谢您的回答。我通过将关于itk的所有文件从一个名为DeVIDE()的软件复制到python itk目录中避免了复杂化,因为DeVIDE中的itk具有“PyBuffer”,并且DeVIDE本身易于安装。我的解决方案听起来很奇怪,但很有效。虽然这似乎是一个有效的答案,但您应该提供更多信息,说明这些信息如何为问题提供重要的解决方案。请尝试改进您的答案。请在任何链接中添加上下文,以便您的答案是独立的,这意味着答案需要在答案中。看见如果你能在这里用自己的话回答这个问题,并且只作为参考链接,那就更好了。请注意,这篇文章可能会被删除。它是如何使用的?展示它如何回答问题。
  //
  // 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() );