2012-02-20 2 views
1

이미 설명자를 계산했지만, 이제는 keypoint에서 float로 변환하기 전에 특이점을 정리하고 싶습니다.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

trainIdx 및 queryIdx가 Dmatch 벡터의 각 요소의 속성을 사용하면 사용자가 제공 키포인트의 벡터에서 일치하는 인덱스를 해당 추출합니다.

기본적으로 matches.at (i) .trainIdx 및 matches.at (i) .queryIdx는 '일치하는 i 번째'색인을 제공합니다. 가장 좋은 부분은 일치 항목이 품질의 내림차순으로 정렬된다는 것입니다. 예를 들어, i = 1은 i = 3보다 우수한 일치입니다. 따라서 코드에서 24 개의 최상의 일치 항목을 추출합니다.

아직도이 질문에 도움이 필요한지 모르겠다. 요청한 지 1 년이 지났습니다. 그러나 나는 똑같은 질문을했고 당신의 질문에 기회가있었습니다. 나도 알아낼 시간이 필요했다. 나는이 질문에 대답하는 것이 나의 의무라고 생각했다. 다른 사람도 같은 질문에 기회를 얻고 도움이 필요하기 때문이다. 빛이있게하십시오!