问题标签 [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.
c++ - FlannBasedMatcher 返回不同的结果
使用FlannBasedMatcher
在 OpenCV 中,我得到不同的结果调用具有相同参数的匹配器。谁能建议我做错了什么?
下面的代码显示了我遇到的问题的一个最小示例 - 它是我如何使用的简化代表FlannBasedMatcher
- 这不是真正的代码:)
每次循环输出的结果应该是相同的,但它们不是。
输出,虽然我认为它不会有帮助(?),是
python - 使 FLANN 匹配器可编辑并保存到磁盘?
我在这里有我的 FLANN 匹配器:
我循环添加训练图像的描述符,然后训练它:
几个相关的方法:
两者都清除了火车描述符集合(对吗?)
但我真正想要的是:
将描述符存储到磁盘并简单地将它们加载到匹配器中,然后对其进行训练
或
将匹配器数据保存到磁盘,这样我就不必每次运行程序时都训练图像。使匹配器可编辑:如果我从磁盘上删除图像,匹配器不应该找到它。也许像
matcher.clear(index_of_image_deleted)
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]);
原始帖子中显示的位置。
python - 在 python 中输出 FLANN 结果
我目前正在使用 FLANN 实现 LSH。
des1 是我的查询图像的二进制描述符,而 flann 是 flanbasedmatcher(使用 FLANN LSH 算法)变量,它具有图像数据库的所有二进制描述符。
如何输出 knnMatch 的结果?
java - 用于 OpenCV Java 的 FLANN
OpenCV C++ 中的 FLANN 匹配器工作正常,但环顾四周,OpenCV Java 中似乎没有 FlannBasedMatcher 的包装器,但我发现了两种可能的(?)解决方法,我不太确定如何使用。
首先是对上一个问题的回答:
但我不太确定他所说的“使用通用匹配器工厂创建匹配器并设置参数”是什么意思
另一种选择是使用 JavaCV,它似乎有一个 flann 的实现:
我一直在使用原始 OpenCV Java 库在 android 上开发应用程序,但我想知道,是否可以同时使用 JavaCV,以便我可以使用 JavaCV 的 FLANN 函数,或者同时使用这两个库不起作用? 或者有谁知道如何使用第一个答案的建议?
任何帮助将不胜感激,谢谢。
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 匹配器运行良好,但在这种情况下速度非常慢。谢谢!
opencv - OpenCV 和 DAISY 描述符
我正在尝试使用 DAISY 和 FlannBasedMatcher 在同一图像的两个视角之间进行特征匹配。
我认为甚至没有一个匹配是正确的。
注意:每次运行程序时我也会得到不同的结果,但我认为这是预期的行为,如下所述:FlannBasedMatcher 返回不同的结果
那么我做错了什么?为什么这些比赛如此糟糕?
错误和不确定的结果
android - 在android上使用opencv为Flann匹配器传递索引参数
我正在尝试通过编辑索引参数来自定义 opencv 中的 Flann 匹配器,但我正在使用 java for android,我不知道它是如何工作的。
我找到了这个答案,但我不知道如何以正确的方式应用它这是我尝试过的代码
这是我得到的错误
OpenCV 错误:虚拟 void cv::FlannBasedMatcher::read(const cv::FileNode &) 中的断言失败 (sp.type() == FileNode::SEQ)
c++ - OpenCV FlannBasedMatcher 在用于一对图像匹配和用于一对图像匹配时给出不同的结果
我想在一些场景图像上找到模板图像。所以我尝试Homography
在场景图像和模板图像之间找到。我正在使用OpenCV
和c++
。首先SURF
用于查找图像和模板的描述符。然后使用FlannBasedMatcher
获取匹配点。一切似乎都很好,但是当我只为每个图像单独运行该程序时,结果与我为所有场景图像运行它时不同。
SURF
每个场景找到的关键点和描述符都是相同的,但是当FlannBasedMatcher
尝试匹配描述符时,结果是不同的。我也尝试FlannBasedMatcher
像下面一样清除,但结果是一样的,没有清除。
任何想法?