OpenCV python的API:FlannBasedMatcher

时间:2011-11-28 20:35:33

标签: python opencv computer-vision

我正在尝试重写描述here的代码。使用python API for Opencv。

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

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

我在the OpenCV reference中反复查看,但发现没有任何内容与python中的FlannBasedMatcher或其他可以完成工作的对象相关。

有什么想法吗?

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

3 个答案:

答案 0 :(得分:10)

查看OpenCV 2.3.1在python2文件夹下提供的示例,我发现了一个基于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]

答案 1 :(得分:3)

Pythonic FlannBasedMatcher已经在OpenCV主干中可用,但如果我没记错的话,它是在2.3.1发布后添加的。

以下是使用FlannBasedMatcher:http://code.opencv.org/projects/opencv/repository/revisions/master/entry/samples/python2/feature_homography.py

的OpenCV示例

答案 2 :(得分:0)

由于缺乏声誉,我无法在上面的帖子中发布无效链接。所以,我将其发布在这里。

The dead link(feature_homography.py)