API-интерфейс Python для OpenCV: FlannBasedMatcher - PullRequest
9 голосов
/ 29 ноября 2011

Я пытаюсь переписать код, описанный здесь .использование Python API для Opencv.

Шаг 3 кода имеет следующие строки:

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

Я просматривал снова и снова в ссылку OpenCV , но нашелничего не связанного с FlannBasedMatcher в python или каким-либо другим объектом, который может выполнять эту работу.

Любые идеи?

ПРИМЕЧАНИЕ: я использую OpenCV 2.3.1 и Python 2.6

Ответы [ 2 ]

10 голосов
/ 29 ноября 2011

Глядя на примеры, предоставленные OpenCV 2.3.1 в папке python2, я обнаружил реализацию функции сопоставления по флангу, которая не полагается на объект FlanBasedMatcher.

Вот код:

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]
3 голосов
/ 29 ноября 2011

Pythonic FlannBasedMatcher уже доступен в стволе OpenCV, но, если я правильно помню, он был добавлен после выпуска 2.3.1.

Вот пример OpenCV с использованием FlannBasedMatcher: http://code.opencv.org/projects/opencv/repository/revisions/master/entry/samples/python2/feature_homography.py

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...