OpenCV的FlannBasedMatcher构造函数中的算法参数取哪些值?

7
在Python中,OpenCV的FlannBasedMatcher构造函数接受一个参数字典,其中第一个是algorithmPython教程建议可以通过传递不同命名的变量来指定algorithm的不同值,例如FLANN_INDEX_KDTREEFLANN_INDEX_LSH,但变量name当然无法向构造函数传达任何信息。你可能认为这些名称应该作为字符串传递,但在随后的示例中,FLANN_INDEX_KDTREE被初始化为0,因此完全不清楚algorithm参数的工作原理。

OpenCV实际上没有任何Python文档。 C ++中, 构造函数不接受通用字典,而是一个实例化IndexClass的对象,其中IndexClass的每个子类对应于不同的算法。

1个回答

10

algorithm接受一个整数,教程中缺少对FLANN_INDEX_KDTREEFLANN_INDEX_LSH进行不同值的初始化。 (大写字母应该是这些固定整数值的描述性标签的提示。)

C++源代码中有这样一个初始化列表,从中可以看出LSH算法对应的值为6。它还将FLANN_INDEX_KDTREE初始化为1,这意味着Python教程中的0要么是错误的,要么是源代码在不同位置使用了冲突的定义(我可能错过了),这将是不幸的。

这是源代码中的所有值:

FLANN_INDEX_LINEAR = 0
FLANN_INDEX_KDTREE = 1
FLANN_INDEX_KMEANS = 2
FLANN_INDEX_COMPOSITE = 3
FLANN_INDEX_KDTREE_SINGLE = 4
FLANN_INDEX_HIERARCHICAL = 5
FLANN_INDEX_LSH = 6
FLANN_INDEX_SAVED = 254
FLANN_INDEX_AUTOTUNED = 255

编辑:我提交了拉取请求,修复了两个问题,现已被接受。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接