2011-11-28 2 views
8

here 코드를 다시 작성하려고합니다. Opencv 용 파이썬 API 사용하기. 내가 the OpenCV reference에서 반복 보였지만 파이썬이나 일을 할 수있는 다른 객체에 FlannBasedMatcher에 관련된 아무것도 발견되지 않은OpenCV python의 API : FlannBasedMatcher

FlannBasedMatcher matcher; 
std::vector<DMatch> matches; 
matcher.match(descriptors_object, descriptors_scene, matches); 

:

코드의 3 단계는이 라인을 가지고있다.

아이디어가 있으십니까?

참고 : 나는 usign에서 OpenCV 2.3.1 파이썬 2.6

답변

10

http://code.opencv.org/projects/opencv/repository/revisions/master/entry/samples/python2/feature_homography.py은 python2 폴더 아래에 OpenCV의 2.3.1에 의해 제공되는 예에서 보면, 나는 발견 FlanBasedMatcher 객체에 의존하지 않는 플란넬 기반 match 함수의 구현 . 빠른 답변

FLANN_INDEX_KDTREE = 1 # bug: flann enums are missing 

flann_params = dict(algorithm = FLANN_INDEX_KDTREE, 
        trees = 4) 

def match_flann(desc1, desc2, r_threshold = 0.6): 
    flann = cv2.flann_Index(desc2, flann_params) 
    idx2, dist = flann.knnSearch(desc1, 2, params = {}) # bug: need to provide empty dict 
    mask = dist[:,0]/dist[:,1] < r_threshold 
    idx1 = np.arange(len(desc1)) 
    pairs = np.int32(zip(idx1, idx2[:,0])) 
    return pairs[mask] 
2

파이썬 FlannBasedMatcher는 OpenCV의 트렁크에서 이미 사용할 수있는,하지만 내가 정확히 기억한다면, 그것은 2.3.1 릴리스 이후에 추가되었습니다. 여기

는 FlannBasedMatcher를 사용 OpenCV의 샘플입니다 :

+0

감사 : 여기

는 코드입니다. 현재 필자는 2.3.1 버전을 고수해야하므로 기능을 추적 할 다른 방법을 찾아야 할 것입니다. –

+1

링크가 없습니다. –

+0

링크가 수정되었습니다. –