2012-02-20 47 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場比賽。

我不知道你是否仍然需要這個問題的幫助,這是你問了一年之後。但我有同樣的問題,我碰巧遇到了你的問題。我花時間弄清楚了。我認爲我有責任回答這個問題,以免別人也有機會就同一問題提供幫助。讓光明!