我是 opencv 新手,在 C# 中使用 EMGU 作为包装器。我正在尝试从图像数据库中获取查询图像的最佳相似图像。
我按照此处所示的示例进行了后续工作。
它使用 SURF 检测器检测图像特征,然后将所有数据库图像描述符组合在一个超级描述符矩阵中进行匹配。
然后它使用 Flann 索引来查找查询图像的最近邻居。
问题是距离矩阵“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;
}