【问题标题】:Dealing with DMatch vectors, accessing data Opencv处理 DMatch 向量,访问数据 Opencv
【发布时间】:2012-02-20 15:50:51
【问题描述】:

我已经计算了描述符,但现在,我想在将其从关键点转换为浮点数之前清除异常值。

我知道这可以自动完成

BruteForceMatcher<cv::L2<float> > matcher;

std::vector<cv::DMatch> matches;


matcher.match(descriptors1,descriptors2, matches);
std::nth_element(matches.begin(),matches.begin()+24, matches.end());
matches.erase(matches.begin()+25, matches.end());`

但这只有在下一步是绘制匹配时才有用,实际上我想做的是在某些图像注册的东西中获得最佳的 25 个匹配以进行后处理。

任何帮助都会很有用。谢谢

伊万

【问题讨论】:

    标签: image opencv matching surf feature-descriptor


    【解决方案1】:

    使用 Dmatch 向量中每个元素的 trainIdx 和 queryIdx 属性,从您提供的关键点向量中提取对应的匹配索引。

    基本上,matches.at(i).trainIdx 和 matches.at(i).queryIdx 将为您提供第 i 个对应匹配项的索引。最好的部分是,匹配按质量降序排列,例如,i=1 将比 i=3 更好,以此类推。因此,在您的代码中,您将提取最佳的 24 个匹配项。

    我不知道你是否还需要这个问题的帮助,你问这个问题已经一年了。但我有同样的问题,我偶然发现了你的问题。我也花了一些时间才弄清楚。我认为回答这个问题是我的责任,以免其他人也遇到同样的问题并需要帮助。要有光!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-20
      • 1970-01-01
      • 1970-01-01
      • 2012-02-09
      • 1970-01-01
      • 1970-01-01
      • 2011-11-19
      相关资源
      最近更新 更多