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

标签 c# opencv emgucv surf flann

我是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/

相关文章:

c# - MVC Url.Action 在服务器中呈现不同于本地的 URL 参数

c++ - 运行来自 Learning Opencv 的练习 2-4 的问题,O'Reilly

python - 在我的 Raspberry PI 上使用 Python 和 OpenCV 没有保存视频文件

python - 将感兴趣的图像点转换为坐标

c# - 参数化返回类型是否需要泛型方法签名?

c# - 使用OpenCV从youtube捕获实时视频

c# - 为什么UndistortPoints()对于这些输入点失败?

c# - 从同步方法调用异步方法是 ASP .NET web api - 问题

c# - 在 C# 中使用 oledb 更新数据

c# - 如何将对象属性作为参数传递给 Razor 组件