OpenCV python的API:FlannBasedMatcher

Est*_*gee 9 python opencv computer-vision

我试图重写这里描述的代码.使用python API for Opencv.

代码的第3步有以下几行:

 FlannBasedMatcher matcher;
 std::vector< DMatch > matches;
 matcher.match( descriptors_object, descriptors_scene, matches );
Run Code Online (Sandbox Code Playgroud)

我在OpenCV引用中反复查看,但发现没有任何与python中的FlannBasedMatcher或其他可以完成工作的对象有关.

有任何想法吗?

注意:我使用的是OpenCV 2.3.1和Python 2.6

Est*_*gee 10

查看由python2文件夹下的OpenCV 2.3.1提供的示例,我发现了一个基于flann的匹配函数的实现,它不依赖于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]
Run Code Online (Sandbox Code Playgroud)