问题标签 [flannbasedmatcher]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1596 浏览

c++ - FlannBasedMatcher 返回不同的结果

使用FlannBasedMatcher在 OpenCV 中,我得到不同的结果调用具有相同参数的匹配器。谁能建议我做错了什么?

下面的代码显示了我遇到的问题的一个最小示例 - 它是我如何使用的简化代表FlannBasedMatcher- 这不是真正的代码:)

每次循环输出的结果应该是相同的,但它们不是。

输出,虽然我认为它不会有帮助(?),是

0 投票
0 回答
634 浏览

python - 使 FLANN 匹配器可编辑并保存到磁盘?

我在这里有我的 FLANN 匹配器:

我循环添加训练图像的描述符,然后训练它:

几个相关的方法:

两者都清除了火车描述符集合(对吗?)

但我真正想要的是:

  1. 将描述符存储到磁盘并简单地将它们加载到匹配器中,然后对其进行训练

    将匹配器数据保存到磁盘,这样我就不必每次运行程序时都训练图像。

  2. 使匹配器可编辑:如果我从磁盘上删除图像,匹配器不应该找到它。也许像matcher.clear(index_of_image_deleted)

0 投票
1 回答
1780 浏览

c++ - OpenCV - 从 yml 加载描述符 - 没有匹配的函数调用

我正在尝试将模板图像中的 SURF 关键点与视频源中显示的内容进行匹配,但在尝试调用FlannBasedMatcher.

我试图通过读取图像、计算关键点和描述符并将它们保存为yml如下格式来做到这一点:

然后在一个单独的函数中,我尝试加载关键点和描述符,并将它们与为视频流计算的值进行比较:

我假设问题是描述符没有从yml文件中正确加载,或者视频源的描述符没有正确传递。

以下只是有关信息流的一些额外信息:

main()调用makeitgrey(frame)调用detectKeypoints(grey_frame)哪个返回makeitgrey()哪个返回main()哪个然后调用matchAndDrawKeypoints (img_1, frames)

编辑:计算关键点和声明的代码。

main()将视频makeitgrey()传递给:

模板图像作为命令行 arg 传入,然后传递到detectTemplateKeypoints(img_1, argv[1]);原始帖子中显示的位置。

0 投票
1 回答
1819 浏览

python - 在 python 中输出 FLANN 结果

我目前正在使用 FLANN 实现 LSH。

des1 是我的查询图像的二进制描述符,而 flann 是 flanbasedmatcher(使用 FLANN LSH 算法)变量,它具有图像数据库的所有二进制描述符。

如何输出 knnMatch 的结果?

0 投票
2 回答
2424 浏览

java - 用于 OpenCV Java 的 FLANN

OpenCV C++ 中的 FLANN 匹配器工作正常,但环顾四周,OpenCV Java 中似乎没有 FlannBasedMatcher 的包装器,但我发现了两种可能的(?)解决方法,我不太确定如何使用。

首先是对上一个问题的回答:

http://answers.opencv.org/question/12429/matching-orb-descriptors-with-flann-lsh-on-android/?answer=12460#post-id-12460

但我不太确定他所说的“使用通用匹配器工厂创建匹配器并设置参数”是什么意思

另一种选择是使用 JavaCV,它似乎有一个 flann 的实现:

https://github.com/bytedeco/javacpp-presets/blob/master/opencv/src/main/java/org/bytedeco/javacpp/opencv_flann.java

我一直在使用原始 OpenCV Java 库在 android 上开发应用程序,但我想知道,是否可以同时使用 JavaCV,以便我可以使用 JavaCV 的 FLANN 函数,或者同时使用这两个库不起作用? 或者有谁知道如何使用第一个答案的建议?

任何帮助将不胜感激,谢谢。

0 投票
0 回答
983 浏览

c++ - 使用 C++ 和 OpenCV 进行关键点分析

我对以下代码有疑问:

该程序的主要功能是:它读取一个查询图像和一组训练图像。然后,它使用建立的检测器类型(SURF、SIFT、FAST...)检测关键点。之后,它使用已建立的描述符类型(FREAK、SIFT...)提取这些关键点的描述符。最后,根据由变量 matcherType (BruteForce, FlannBased...) 建立的匹配器,给出查询图像和整个训练图像集之间的匹配。我的问题是我试图使用 OpenCV 在其方法中提供的所有检测器、描述符和匹配器类型(变量检测器类型、描述符类型、匹配器类型)。但是,我只得到了少数几个结果。例如,Detector-Descriptor-Matcher "SURF-SURF-FlannBased" 组合对我不起作用,

juan@juan-HP-G62-NoteBook-PC:~/workspace/keypoint/Debug$ ./keypoint < 创建特征检测器、描述符提取器和描述符匹配器 ...

无法创建给定类型的特征检测器或描述符提取器或描述符匹配器。< 读取图像... 读取了 77 个火车图像。

< 从图像中提取关键点... Violación de segmento (`core' generado)

但是,FAST-FREAK-BruteForce 组合对我来说效果很好:

< 创建特征检测器、描述符提取器和描述符匹配器...

< 读取图像... 读取了 77 个火车图像。

< 从图像中提取关键点...

提取时间:374.277 <计算关键点的描述符...查询描述符计数:786;火车描述符总数:154417 描述时间:1489.24 <在匹配器中设置火车描述符集合并将查询描述符匹配到它们...匹配数:786 构建时间:0.024077 ms;匹配时间:14292.6 毫秒

我正在使用 OpenCV 2.4.9,Eclipse 作为 IDE,Linux 作为 SO。谁能帮我?我对使用 FlannBased 匹配器处理大型比较数据库非常感兴趣,因为 BruteForce 匹配器运行良好,但在这种情况下速度非常慢。谢谢!

0 投票
2 回答
3390 浏览

opencv - OpenCV 和 DAISY 描述符

我正在尝试使用 DAISY 和 FlannBasedMatcher 在同一图像的两个视角之间进行特征匹配。

我认为甚至没有一个匹配是正确的。

注意:每次运行程序时我也会得到不同的结果,但我认为这是预期的行为,如下所述:FlannBasedMatcher 返回不同的结果

那么我做错了什么?为什么这些比赛如此糟糕?


输入图像

在此处输入图像描述

在此处输入图像描述

错误和不确定的结果

在此处输入图像描述

在此处输入图像描述

0 投票
1 回答
176 浏览

opencv3.0 - OpenCV3.0:SURF 检测和 FlannBased 匹配器跟踪矩形问题

我正在尝试使用 FlannBased 匹配器实现 SURF 检测和跟踪。我的代码在检测部分正常工作,但问题在于跟踪。

在此处输入图像描述

您可以在上图中看到跟踪矩形没有聚焦在正确的对象上。此外,即使我移动相机,矩形也保持静止。我不确定我哪里出错了。

这是我实现的代码

0 投票
1 回答
722 浏览

android - 在android上使用opencv为Flann匹配器传递索引参数

我正在尝试通过编辑索引参数来自定义 opencv 中的 Flann 匹配器,但我正在使用 java for android,我不知道它是如何工作的。
我找到了这个答案,但我不知道如何以正确的方式应用它这是我尝试过的代码

这是我得到的错误

OpenCV 错误:虚拟 void cv::FlannBasedMatcher::read(const cv::FileNode &) 中的断言失败 (sp.type() == FileNode::SEQ)

0 投票
0 回答
211 浏览

c++ - OpenCV FlannBasedMatcher 在用于一对图像匹配和用于一对图像匹配时给出不同的结果

我想在一些场景图像上找到模板图像。所以我尝试Homography在场景图像和模板图像之间找到。我正在使用OpenCVc++。首先SURF用于查找图像和模板的描述符。然后使用FlannBasedMatcher获取匹配点。一切似乎都很好,但是当我只为每个图像单独运行该程序时,结果与我为所有场景图像运行它时不同。

SURF每个场景找到的关键点和描述符都是相同的,但是当FlannBasedMatcher尝试匹配描述符时,结果是不同的。我也尝试FlannBasedMatcher像下面一样清除,但结果是一样的,没有清除。

任何想法?