2016-06-11 6 views
0

Je suis nouveau à opencv et en utilisant EMGU comme wrapper en C#. J'essaie d'obtenir la meilleure image similaire pour une image de requête à partir de la base de données d'images.Opencv Surf et FlannIndex pour trouver l'image dans la base de données d'images

J'ai suivi l'exemple comme montre here pour faire le travail.

utilise un détecteur SURF pour détecter les caractéristiques de l'image, puis il combine tous les descripteurs d'images de base de données dans une matrice de descripteurs Super pour l'appariement. Ensuite, il utilise l'index Flann pour trouver les voisins les plus proches de l'image de la requête.

Le problème est que la matrice de distance "dists" contient toujours des valeurs "0".

flannIndex.KnnSearch(queryDescriptors, indices, dists, 2, 24);

Répondre

1

S'il vous plaît le code suivant dans votre projet:

if (img.IndexStart <= indices[i, 0] && img.IndexEnd >= indices[i, 0]) 
        //if (img.IndexStart <= i && img.IndexEnd >= i) 
        { 
         img.Similarity++; 
         break; 
        } 

Modification:

if (img.IndexStart <= indices[i, 1] && img.IndexEnd >= indices[i, 1]) 
        //if (img.IndexStart <= i && img.IndexEnd >= i) 
        { 
         img.Similarity++; 
         break; 
        }