2011-11-28 19 views
8

Sto tentando di riscrivere il codice descritto here. usando l'API python per Opencv.API OpenCV python: FlannBasedMatcher

La fase 3 del codice ha queste righe:

FlannBasedMatcher matcher; 
std::vector<DMatch> matches; 
matcher.match(descriptors_object, descriptors_scene, matches); 

Ho guardato più e più volte in the OpenCV reference ma non trovò nulla relative a un FlannBasedMatcher in pitone o qualche altro oggetto che può fare il lavoro.

Qualche idea?

NOTA: Sono usign OpenCV 2.3.1 e Python 2.6

risposta

10

Guardando negli esempi forniti da OpenCV 2.3.1 sotto la cartella python2, ho trovato un'implementazione di una funzione match basato Flann che non si basa sull'oggetto FlanBasedMatcher .

Ecco il codice:

FLANN_INDEX_KDTREE = 1 # bug: flann enums are missing 

flann_params = dict(algorithm = FLANN_INDEX_KDTREE, 
        trees = 4) 

def match_flann(desc1, desc2, r_threshold = 0.6): 
    flann = cv2.flann_Index(desc2, flann_params) 
    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])) 
    return pairs[mask] 
2

Pythonic FlannBasedMatcher è già disponibile in tronco OpenCV, ma se non ricordo male, è stato aggiunto dopo il rilascio 2.3.1.

Ecco campione OpenCV utilizzando FlannBasedMatcher: http://code.opencv.org/projects/opencv/repository/revisions/master/entry/samples/python2/feature_homography.py

+0

Grazie per la risposta rapida. In questo momento, ho bisogno di attenermi alla versione 2.3.1 quindi dovrò trovare me stesso un altro modo per tenere traccia delle caratteristiche. –

+1

Il collegamento è morto –

+0

Il collegamento è stato risolto. –