Opencv Surf和FlannIndex在图像数据库中查找图像

时间:2016-06-11 18:14:43

标签: c# opencv emgucv surf flann

我是opencv的新手,并且在C#中使用EMGU作为包装器。我正在尝试从图像数据库中获取查询图像的最佳相似图像。

我按照show here进行了示例,以完成工作。

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

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

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

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

1 个答案:

答案 0 :(得分: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;
                    }