如何在OpenCV for Java中使用nonfree模块?

时间:2014-03-12 20:58:44

标签: java opencv surf

我想使用SURF进行特征检测found here并在Java应用程序中使用它,但默认情况下,非自由模块不包含在库中,因为它们已获得专利。

如何访问此模块?我搜索并尝试了一些但没有工作的东西;许多专注于Android,我不完全理解。

使用cmake构建库时可以添加吗?还是有更好的意思?

1 个答案:

答案 0 :(得分:0)

实际上当我使用cmake时,非自由库模块被选为默认模块。所以你应该在lib文件夹中内置这个模块。 Nonfree模块包含一些可能在某些国家获得专利的功能。因此,如果您要构建商业应用程序,请务必小心,并在其中一个国家/地区销售。

要使用它,您需要将其添加到引用中并包含标题。


修改

我在这里查看了文档:http://docs.opencv.org/java/似乎没有名称为nonfree的模块,并且没有与sift或surf相关的类。我认为它应该与c ++库相同,但我错了。

另一方面,人们声称他们为OpenCV4Android构建了它。这意味着它可以以某种方式非正式地编译为java,但没有人似乎克服了这一点。就像这里:http://answers.opencv.org/question/11185/how-can-i-generate-java-bindings-for-non-free/

此处还有一个问题:http://code.opencv.org/issues/2825

目前还没有解决方案。实现JNI并加载已编译的c ++非自由库可以解决这个问题。


再修改一次:)

在教程中,有人为非自由模块实现了JNI以与android一起使用。我目前没有足够的知识来尝试java。但是志愿者会很高兴尝试使用java:

http://web.guohuiwang.com/technical-notes/opencv_nonfree_android_jni_demo