2011-11-28 33 views
8

Tôi đang cố viết lại mã được mô tả here. sử dụng API python cho Opencv.API của Python của OpenCV: FlannBasedMatcher

Bước 3 của mã có dòng này:

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

tôi đã xem xét hơn và hơn trong the OpenCV reference nhưng thấy không có gì liên quan đến một FlannBasedMatcher trong python hoặc một số đối tượng khác mà có thể làm việc.

Bất kỳ ý tưởng nào?

LƯU Ý: Tôi usign OpenCV 2.3.1 và Python 2.6

Trả lời

10

Nhìn trong các ví dụ được cung cấp bởi OpenCV 2.3.1 trong thư mục python2, tôi thấy một thực hiện một chức năng phù hợp dựa Flann mà không dựa trên đối tượng FlanBasedMatcher .

Đây là mã:

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

Pythonic FlannBasedMatcher là đã có sẵn trong OpenCV thân cây, nhưng nếu tôi nhớ không lầm thì nó đã được bổ sung sau khi 2.3.1 phát hành.

Đây là OpenCV mẫu sử dụng FlannBasedMatcher: http://code.opencv.org/projects/opencv/repository/revisions/master/entry/samples/python2/feature_homography.py

+0

Cảm ơn câu trả lời nhanh. Tại thời điểm này, tôi cần phải gắn bó với phiên bản 2.3.1 vì vậy tôi sẽ phải tự tìm ra cách khác để theo dõi các tính năng. –

+1

Liên kết đã chết –

+0

Liên kết đã được sửa. –

Các vấn đề liên quan