OpenCV python#39;s API: FlannBasedMatcher(OpenCV python的API:FlannBasedMatcher)
问题描述
我正在尝试重写此处中描述的代码.使用 Opencv 的 python API.
I am trying to rewrite the code described here. using the python API for Opencv.
代码的第 3 步有这几行:
The step 3 of the code has this lines:
FlannBasedMatcher matcher;
std::vector< DMatch > matches;
matcher.match( descriptors_object, descriptors_scene, matches );
我在 OpenCV 参考 中反复查看,但没有发现与 python 中的 FlannBasedMatcher 或其他对象相关的内容哪个可以完成这项工作.
I have looked over and over in the OpenCV reference but found nothing related to a FlannBasedMatcher in python or some other object which can do the work.
有什么想法吗?
注意:我使用 OpenCV 2.3.1 和 Python 2.6
NOTE: I am usign OpenCV 2.3.1 and Python 2.6
推荐答案
查看python2文件夹下OpenCV 2.3.1提供的示例,我发现了一个基于flann的匹配函数的实现,它不依赖于FlanBasedMatcher对象.
Looking in the examples provided by OpenCV 2.3.1 under the python2 folder, I found an implementation of a flann based match function which doesn't rely on the FlanBasedMatcher object.
代码如下:
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]
这篇关于OpenCV python的API:FlannBasedMatcher的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:OpenCV python的API:FlannBasedMatcher
基础教程推荐
- kivy 应用程序中的一个简单网页作为小部件 2022-01-01
- 在 Python 中将货币解析为数字 2022-01-01
- Kivy 使用 opencv.调整图像大小 2022-01-01
- Python,确定字符串是否应转换为 Int 或 Float 2022-01-01
- matplotlib 设置 yaxis 标签大小 2022-01-01
- 比较两个文本文件以找出差异并将它们输出到新的文本文件 2022-01-01
- 究竟什么是“容器"?在蟒蛇?(以及所有的 python 容器类型是什么?) 2022-01-01
- 在 Django Admin 中使用内联 OneToOneField 2022-01-01
- 对多索引数据帧的列进行排序 2022-01-01
- Python 中是否有任何支持将长字符串转储为块文字或折叠块的 yaml 库? 2022-01-01
