用于opencvjava的FLANN OpenCV C++中的FLANN匹配器工作良好,但是从周围看,OpenCV java中没有FLANBASEDMATCER的包装器,但是我发现了两种可能的(我不太确定如何使用的)解决方案。

用于opencvjava的FLANN OpenCV C++中的FLANN匹配器工作良好,但是从周围看,OpenCV java中没有FLANBASEDMATCER的包装器,但是我发现了两种可能的(我不太确定如何使用的)解决方案。,java,opencv,javacv,flann,flannbasedmatcher,Java,Opencv,Javacv,Flann,Flannbasedmatcher,第一个是对前面问题的回答: 但我不太清楚他所说的“使用通用匹配器工厂创建匹配器并设置参数”是什么意思 另一种选择是使用JavaCV,它似乎有一个flann的实现: 我一直在使用原始的OpenCV Java库在android上开发一个应用程序,但我想知道,是否可以同时使用JavaCV,这样我就可以使用JavaCV的FLANN函数,或者同时使用这两个库不起作用?或者有人知道如何使用第一个答案的建议吗 任何帮助都将不胜感激,谢谢 对于第一种方法,“使用公共匹配器工厂和设置参数创建匹配器”表示以下代

第一个是对前面问题的回答:

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

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

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

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

  • 对于第一种方法,“使用公共匹配器工厂和设置参数创建匹配器”表示以下代码
  • DescriptorMatcher matcher=DescriptorMatcher.create(DescriptorMatcher.flannbase)

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

  • 至于使用JavaCV,medloh的评论是正确的。这增加了复杂性,但也是可能的

  • 在版本3.2之前的OpenCV java包装中有一个bug。最新版本没有此缺陷,因此您可以在Java中实例化FLANN matcher,如下所示:


    FlannBasedMatcher matcher=FlannBasedMatcher.create()我以前在同一代码中使用过这两种方法。当您混合使用opencv java绑定和JavaCV时,会感到困惑。您可能会遇到一些命名冲突,因此必须使用完全限定的包名,这增加了复杂性,但当我几年前尝试使用它时,它起了作用,当时JavaCV实现了一些opencv中还没有的人脸检测功能。对不起,我帮不了你。