Itk OtsumultiplethresholdsimageFilter没有处理

itk OtsuMultipleThresholdsImageFilter does not process

本文关键字:处理 OtsumultiplethresholdsimageFilter Itk      更新时间:2023-10-16

我试图在项目中使用ITK的OtsumultiplipthresholdsimageFilter滤波器,但我没有输出。

我的目的是在OpenCV和ITK之间建立一个简单的接口。要将我的数据从OpenCV的垫子容器转换为ITK :: Image我使用ITK的桥梁到OpenCV,我可以检查数据是否正确发送到ITK。我什至可以感谢QuickView。

但是,当我设置为示例启发的过滤器时,方法GetThresholds()返回的对象为空。

这是我写的代码:

   typedef itk::Image<uchar,2> image_type;
    typedef itk::OtsuMultipleThresholdsImageFilter<image_type, image_type> filter_type;
    image_type::Pointer img = itk::OpenCVImageBridge::CVMatToITKImage<image_type>(src);
    image_type::SizeType size = img->GetLargestPossibleRegion().GetSize();
    filter_type::Pointer filter = filter_type::New();

    filter->SetInput(img);
    filter->SetNumberOfHistogramBins(256);
    filter->SetNumberOfThresholds(K);
    filter_type::ThresholdVectorType tmp = filter->GetThresholds();
    std::cout<<"CHECK: "<<tmp.size()<<std::endl;

src是opencv的cv_8u(c1(类型。

使用ITK的基本概念是它是管道架构。您必须连接输入和输出,然后更新管道。

您已经连接了管道,但是您尚未执行它。您必须致电filter->Update()

请阅读ITK软件指南,以了解ITK的基础知识:https://itk.org/itksoftwareguide.pdf