【问题标题】:FLANN for OpenCV Java用于 OpenCV Java 的 FLANN
【发布时间】:2017-08-23 22:57:22
【问题描述】:

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 函数,或者同时使用这两个库时间不上班?或者有谁知道如何使用第一个答案建议?

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

【问题讨论】:

  • 我之前在相同的代码中使用过两者。当您混合 opencv java 绑定和 JavaCV 时,它会变得令人困惑。您可能会遇到一些命名冲突,因此您必须使用完全限定的包名称,这会增加复杂性,但是当我在几年前尝试 JavaCV 实现了一些在 opencv 中尚不可用的面部检测功能时,它起作用了。抱歉,无法帮助弗兰恩。

标签: java opencv javacv flann flannbasedmatcher


【解决方案1】:
  1. 对于第一种方法,“使用通用匹配器工厂创建匹配器并设置参数”是指以下代码

DescriptorMatcher matcher = DescriptorMatcher.create(DescriptorMatcher.FLANNBASED);

要在 Java 中设置参数,您必须创建一个 yaml 配置文件并使用 matcher.read() 读取参数,因为目前 Java 中没有配置参数的包装器。还有一点需要注意的是

  1. 关于使用JavaCV,medloh 的评论是正确的。它增加了复杂性,但有可能。

【讨论】:

    【解决方案2】:

    在版本 3.2 之前的 OpenCV java 包装中存在一个错误。最近的版本没有这个缺陷,因此您可以在 Java 中实例化 FLANN 匹配器,如下所示:

    FlannBasedMatcher matcher = FlannBasedMatcher.create();

    DescriptorMatcher 是过时的包装器,我不建议使用它。

    【讨论】:

      猜你喜欢
      • 2016-09-26
      • 1970-01-01
      • 1970-01-01
      • 2017-06-01
      • 1970-01-01
      • 2023-03-24
      • 2015-04-25
      • 1970-01-01
      • 2014-05-02
      相关资源
      最近更新 更多