2015-04-23 67 views
2

OpenCV C++中的FLANN匹配器工作良好,但从环视看来,OpenCV Java中没有FlannBasedMatcher的包装,但我发现了两种可能的(?)解决方法,我不太清楚如何使用。用于OpenCV Java的FLANN

首先是回答前一个问题:

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库开发一个应用程序,但我想知道,是否可以一起使用JavaCV,以便我可以使用JavaCV的FLANN函数,或者将同时使用这两个库工作?还是有人知道如何使用第一个答案的建议?

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

+0

我在之前使用过相同的代码。当你混合opencv java绑定和JavaCV时,会变得混乱。您可能会遇到一些命名冲突,因此您必须使用完全限定的软件包名称,并且增加了复杂性,但是它在几年前尝试使用时发挥了作用,当时JavaCV已经实现了opencv中尚未提供的某些人脸检测工具。对不起,弗兰不能帮忙。 – medloh

回答

2
  1. 对于第一种方法,“使用通用匹配的工厂和设置参数来创建匹配器”指的是下面的代码

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

对于Java的设置参数,你就必须创建一个yaml配置文件和使用matcher.read()来读取参数,因为目前在Java中没有用于配置参数的包装器。另外需要注意的是

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

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

FlannBasedMatcher matcher = FlannBasedMatcher.create();

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