2017-10-18 183 views
1

OpenCV的KNN搜索我在C++中的OpenCV的此示例代碼:,在蟒蛇

flann::KDTreeIndexParams indexParams; 
flann::Index kdtree(Mat(cloud2d).reshape(1), indexParams); 
vector<float> query; 
query.push_back(370); 
query.push_back(464); 
vector<int> indices; 
vector<float> dists; 
kdtree.knnSearch(query, indices, dists, 3); 

我該怎麼做相同的蟒蛇?試過了,但不能用cv2創建kdtree或KDTreeIndexParams。

+1

@gsamaras請發表這個答案,我會接受它。 –

回答

1

FLANN是一個ANN庫,用C++編寫,獨立於OpenCV。它提供了Python的綁定,在pyflann

一個例子可以發現here

from pyflann import * 
import numpy as np 

dataset = np.array(
    [[1., 1, 1, 2, 3], 
    [10, 10, 10, 3, 2], 
    [100, 100, 2, 30, 1] 
    ]) 
testset = np.array(
    [[1., 1, 1, 1, 1], 
    [90, 90, 10, 10, 1] 
    ]) 
flann = FLANN() 
result, dists = flann.nn(
    dataset, testset, 2, algorithm="kmeans", branching=32, iterations=7, checks=16) 
print result 
print dists 

dataset = np.random.rand(10000, 128) 
testset = np.random.rand(1000, 128) 
flann = FLANN() 
result, dists = flann.nn(
    dataset, testset, 5, algorithm="kmeans", branching=32, iterations=7, checks=16) 
print result 
print dists 

這個例子應該足以讓你開始。