最近,在使用ITK进行医学影像处理时,遇到了itk::Image<PixelType, Dimension>类型的指针作为参数传递失败的问题,问题详情及解决方案如下。
错误代码如下:
using ImageType = itk::Image<PixelType, Dimension>;
ImageType* fun(ImageType* image){
.......
}
ImageType* input = readInput();
ImageType* output = fun(input);
解决方案:
使用ImageType::Pointer代替ImageType*。这是由于ITK中使用了SmartPointer来管理指针和内存,使用ImageType*并不能将内存传递成功,需要使用ITK提供的ImageType::Pointer。
正确的使用方式:
using ImageType = itk::Image<PixelType, Dimension>;
ImageType::Pointer fun(ImageType::Pointer image){
.......
}
ImageType::Pointer input = readInput();
ImageType::Pointer output = fun(input);