2016-06-11 62 views
0

我是新来opencv和使用EMGU作为包装在C#中。我试图从图像数据库中获取查询图像的最佳相似图像。Opencv冲浪和FlannIndex在图像数据库中查找图像

我跟进示例here来做这项工作。

它使用SURF检测器检测图像特征,然后将所有数据库图像描述符合并到一个超描述符矩阵中进行匹配。

然后它使用Flann索引查找查询图像的最近邻居。

问题是距离矩阵“dists”始终包含“0”值。

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

回答

1

请在您的项目下面的代码:

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

更改为:

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