我正尝试在一个项目中使用ITK的OtsuMultipleThresholdsImageFilter过滤器,但我没有输出。
我的目标是在OpenCV和ITK之间创建一个简单的接口。为了将我的数据从OpenCV的Mat容器转换到itk::Image,我使用ITK的桥到OpenCV,我可以检查数据是否正确地发送到ITK。我甚至能够显示感谢QuickView。
但是,当我设置受this示例启发的过滤器时,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的Mat of CV_8U(C1)类型。
发布于 2018-02-22 23:36:46
使用ITK的一个基本概念是它是一个流水线架构。您必须连接输入和输出,然后更新管道。
您已连接管道,但尚未执行它。您必须调用filter->Update()。
请阅读ITK软件指南以了解ITK的基本原理:https://itk.org/ItkSoftwareGuide.pdf
https://stackoverflow.com/questions/48931245
复制相似问题