我是opencv的新手,并在C#中使用EMGU作为包装器。我正在尝试从图像数据库中获取查询图像的最佳相似图像。
我按照显示here的示例进行了后续工作。
它使用SURF检测器检测图像特征,然后将所有数据库图像描述符组合到一个Super描述符矩阵中进行匹配。
然后,它使用弗兰指数(Flann Index)查找查询图像的最近邻居。
问题在于距离矩阵“dists”始终包含“0”值。
flannIndex.KnnSearch(queryDescriptors, indices, dists, 2, 24);
最佳答案
请在您的项目中使用以下代码:
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;
}
关于c# - Opencv Surf和FlannIndex在图像数据库中查找图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37767085/