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)