2012-02-20 63 views
1

我已经计算了描述符,但现在,我想在将其从关键点转换为浮点数之前清理异常值。处理DMatch矢量,访问数据Opencv

我知道,这可以通过

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());` 

自动完成,但如果下一步是借鉴了比赛,这是唯一有用的,实际上是我想要做的是获得posprocessing最佳的25场比赛在一些图像注册的东西。

任何帮助将是有用的。感谢

伊万

回答

-1

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

基本上,matches.at(I).trainIdx和matches.at(I).queryIdx会给你的“索引第i个相应的匹配。最好的部分是,比赛按照质量从高到低的顺序排列,因为i = 1比i = 3更好,依此类推。因此,在您的代码中,您正在提取最佳的24场比赛。

我不知道你是否仍然需要这个问题的帮助,这是你问了一年之后。但我有同样的问题,我碰巧遇到了你的问题。我花时间弄清楚了。我认为我有责任回答这个问题,以免别人也有机会就同一问题提供帮助。让光明!