Я знаю способ реализации преобразования между изображением itk и изображением SimpleITK в C ++, который является примером в 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 невозможно преобразовать тип, такой как» dynamic_cast «в C ++.
Для этого есть одно возможное решение: использовать PyBuffer для преобразования itkImage в массив numpy, а затем использовать SimpleITK для окончательного преобразования массива в изображение SimpleITK. Но мне не удается создать itkPyBuffer. И я думаю, что этот метод не является прямым, чтобы решить эту проблему.
Можете ли вы помочь мне преобразовать код C ++ в доступный код Python? Спасибо.
Я могу повторить, что образ SimpleITK не может быть создан в Python из образа itk. Я не нашел способ обойти PyBuffer, так что вам, возможно, придется все-таки скомпилировать. Вот описание небольшой ошибки, которая может вам помочь: https://pypi.python.org/pypi/MedPy/0.1.0
Других решений пока нет …