Hi,
I have been working with kNN in OpenCV.
I simply passed some (x,y) coordinates as samples data for kNN and their index as responses. Then I gave a (x,y) value to find the nearest neighbour ( I took this case to visualize it easily). It works fine if k=1. But when I pass k=3, i get weird result. As per my knowledge, knn.find_nearest() returns following things:
retval - I don't know what it is results - It has the label of nearest neighbour. neighborResponses - labels of k nearest neighbours with distance in increasing order. dists - Their corresponding distances in increasing order
In short, results and neighborResponses[0] should give the same result, right? But I am not getting it. See some examples below:
result neighborResponses dists
----------------------------------------------------------------------------
[[ 1.]] [[ 19. 16. 1.]] [[ 36. 293. 338.]]
[[ 2.]] [[ 24. 2. 21.]] [[ 306. 490. 557.]]
[[ 1.]] [[ 4. 10. 1.]] [[ 65. 185. 464.]]
See, the result shows not the one with lowest distance. Why it is like that? Or did I understand it wrong ?