我知道如何在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