我想在这里使用SURF进行特性检测,并在Java应用程序中使用它,但是默认情况下非自由模块不包含在库中,因为它们是专利的。
如何访问该模块?我已经搜索并尝试了一些东西,但没有一个奏效;很多人关注Android,我不完全理解。
我可以在使用cmake构建库时添加它吗?或者还有更好的方法吗?
实际上,当我使用cmake时,非自由库模块被选为默认值。所以你应该把这个模块建在你的lib文件夹中。非自由模块包括一些可能在某些国家获得专利的功能。因此,如果你正在构建一个商业应用程序,并且你将在这些国家之一销售它,那么你应该小心。
要使用它,您需要将其添加到引用中并包含标题。
编辑
我检查了这里的文档:http://docs.opencv.org/java/似乎没有模块名称nonfree,也没有与筛选或冲浪相关的类。我认为它应该与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++非自由库可以顺便解决这个问题。
再编辑一次:)
在教程中,有人实现了用于android的非自由模块的JNI。目前我没有足够的知识来为java尝试它。但是如果有志愿者可以尝试使用java:
http://web.guohuiwang.com/technical-notes/opencv_nonfree_android_jni_demo