算法参数在OpenCV的FlannBasedMatcher构造函数中有什么价值?

时间:2017-02-22 16:25:34

标签: python opencv flann

在python中,OpenCV的FlannBasedMatcher构造函数采用参数字典,第一个是algorithmThe python tutorial建议您可以通过传递不同命名的变量来指定algorithm的不同值,例如FLANN_INDEX_KDTREEFLANN_INDEX_LSH,但变量 name 当然不能向构造函数传达任何内容。有人可能会认为这些名称应该作为字符串传递,但在下面的示例中,FLANN_INDEX_KDTREE初始化为0,因此完全不清楚algorithm参数是如何工作的。

OpenCV并没有真正的python文档。 In C++,构造函数不会使用通用字典,而是实例化IndexClass的对象,其中IndexClass的每个子类对应不同的算法。

1 个答案:

答案 0 :(得分:4)

algorithm采用整数,教程中缺少的是FLANN_INDEX_KDTREEFLANN_INDEX_LSH的初始化值。 (大写应该暗示这些是固定整数值的描述性标签。)

C++ source code有这样的初始化列表,从中可以看出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

编辑:我提交了a pull request来解决现已被接受的两个问题。