2017-02-22 34 views
1

在python中,OpenCV的FlannBasedMatcher構造函數需要參數的字典,其中第一個是algorithmThe python tutorial表明可以通過傳遞不同的命名變量來指定不同的值algorithm,例如, FLANN_INDEX_KDTREEFLANN_INDEX_LSH,但變量名稱當然不能將任何東西傳遞給構造函數。有人可能會認爲這些名稱應該作爲字符串傳遞,但在下面的示例中,FLANN_INDEX_KDTREE初始化爲0,因此完全不清楚algorithm參數如何工作。算法參數在OpenCV的FlannBasedMatcher構造函數中使用了什麼值?

OpenCV並沒有真正的Python文檔。 In C++,構造函數不採用通用字典,而是實例化IndexClass的對象,其中每個IndexClass的子類對應於不同的算法。

回答

1

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修復現在已被接受這兩個問題。

相關問題