在 ITK 中实例化 ImageToPathFilter
instantiating ImageToPathFilter in ITK
我正在尝试在 ITK 中使用 ImageToPathFilter,但我无法使用正常的 ClassName::Pointer = ClassName::New();
例程实例化它。
这是我的代码
typedef itk::Image<unsigned int, 3> LabelImageType;
typedef itk::ChainCodePath<2> PathType;
typedef itk::ImageToPathFilter<LabelImageType, PathType> ImageToPathType;
ImageToPathType::Pointer filter = ImageToPathType::New();
最后一行导致以下错误
cannot convert from 'itk::SmartPointer<itk::PathSource<TOutputPath>>' to 'itk::SmartPointer<itk::ImageToPathFilter<LabelImageType,PathType>>'
此 class 被宣传为过滤器,但它继承自 PathSource,因此使用 PathSource<PathType>
而不是 ImageToPathFilter
可以,但我不能将 SetInput()
用作我会用 ITK 过滤器。
我认为解决方案可能涉及一些铸造魔法,但我在这方面非常无知。
谢谢
事实证明,itk::ImageToPathFilter
class 是一个 Base class,并不意味着要被实例化。
ITK class 使用智能指针的 es 在它们的定义中有 itkNewMacro
,但是这个 class 没有,在这个 [=18= 上调用 New()
] 最终会调用父级的 New(),即 itk::PathSource
。这解释了错误消息。
我正在尝试在 ITK 中使用 ImageToPathFilter,但我无法使用正常的 ClassName::Pointer = ClassName::New();
例程实例化它。
这是我的代码
typedef itk::Image<unsigned int, 3> LabelImageType;
typedef itk::ChainCodePath<2> PathType;
typedef itk::ImageToPathFilter<LabelImageType, PathType> ImageToPathType;
ImageToPathType::Pointer filter = ImageToPathType::New();
最后一行导致以下错误
cannot convert from 'itk::SmartPointer<itk::PathSource<TOutputPath>>' to 'itk::SmartPointer<itk::ImageToPathFilter<LabelImageType,PathType>>'
此 class 被宣传为过滤器,但它继承自 PathSource,因此使用 PathSource<PathType>
而不是 ImageToPathFilter
可以,但我不能将 SetInput()
用作我会用 ITK 过滤器。
我认为解决方案可能涉及一些铸造魔法,但我在这方面非常无知。
谢谢
事实证明,itk::ImageToPathFilter
class 是一个 Base class,并不意味着要被实例化。
ITK class 使用智能指针的 es 在它们的定义中有 itkNewMacro
,但是这个 class 没有,在这个 [=18= 上调用 New()
] 最终会调用父级的 New(),即 itk::PathSource
。这解释了错误消息。