2011-12-08 3 views
9

아무도 도와 줄 수 있습니까? 기능 일치자가 제공된 코드에서 선택한 최상의 픽셀의 x 및 y 좌표를 얻고 싶습니다. opencv에서 C++을 사용합니다. Opencv - 기능 일치에서 픽셀 좌표 얻기

http://opencv.itseez.com/doc/tutorials/features2d/feature_flann_matcher/feature_flann_matcher.html#feature-flann-matcher

주위를 찾고 있지만, 일을 아무것도 얻을 수 없습니다.

도움을 주시면 대단히 감사하겠습니다.

답변

13

DMatch 클래스는 두 개의 일치하는 KeyPoints (기차 및 쿼리) 사이의 거리를 제공합니다. 따라서, 검출 된 최상의 쌍이 가장 작은 거리를 가져야합니다. 이 튜토리얼에서는 2 * (최소 페어 거리) 미만의 모든 일치 항목을 잡고 가장 적합한 것으로 간주합니다.

그래서 가장 일치하는 (x, y) 좌표를 얻으려면. 두 개의 서로 다른 KeyPoint 벡터 (keypoints_1keypoints_2)의 해당 색인을 조회하려면 good_matches (DMatch 개체의 목록)을 사용해야합니다. 뭔가 같이 :

for(size_t i = 0; i < good_matches.size(); i++) 
{ 
    Point2f point1 = keypoints_1[good_matches[i].queryIdx].pt; 
    Point2f point2 = keypoints_2[good_matches[i].trainIdx].pt; 
    // do something with the best points... 
} 
+0

일부 세미콜론이없는 :) 감사 @ScottMarchant –

+0

, 좋은 선생님 : 세미콜론 이제 추가되었습니다. – mevatron