See the answer to this question .
Here is the relevant code from Esteban Angee :
r_threshold = 0.6 FLANN_INDEX_KDTREE = 1
Build a parameter dictionary:
flann_params = dict(algorithm = FLANN_INDEX_KDTREE, trees = 4) flann = cv2.flann_Index(desc2, flann_params)
Search for nearby neighbors:
idx2, dist = flann.knnSearch(desc1, 2, params = {}) # bug: need to provide empty dict mask = dist[:,0] / dist[:,1] < r_threshold idx1 = np.arange(len(desc1)) pairs = np.int32( zip(idx1, idx2[:,0]) )
Returns descriptors that match:
return pairs[mask]
I'm not on my workstation right now, so I'm afraid I can't look at what is wrong with your code, but this question solved all my problems when I had the same problem. You do not need to use FlannBasedMatcher , I remember that I also had problems with it.
If this does not help, I will see if I can find my solution tomorrow or so.
source share