我正在使用 OpenCV 包装器 JavaCV 开发一个简短的应用程序。我尝试运行一个基本示例,它在我的计算机上运行没有任何问题。
现在,当我尝试在笔记本电脑上执行相同的程序时,我遇到了问题。 OpenCV 没有安装在那里,但 OpenCV 二进制文件包含在 JavaCV jar 中,而 JavaCV jar 包含在我的 jar 文件中。
所以我的问题是是否有机会创建一个可运行的 jar 文件,可以在任何未安装 OpenCV 的 Ubuntu 或 Windows 系统上执行。
谢谢并致以诚挚的问候
安德烈亚斯
最佳答案
是的,但考虑到 Java 和 C++ 的限制以及 Microsoft 的许可问题,最简单的方法是将您需要的所有内容静态链接到一个大型 JNI 库中,每个平台一个。这可以通过修改opencv_core.java
顶部的目录来完成。文件并将它们指向静态库,并使用 -o myMassiveJNIlib
JavaCPP 的选项(参见 JavaCV 的 build.xml
文件内部)。在您的应用程序中,只需在使用 JavaCV 之前调用 System.load('path/to/myMassiveJNIlib') 即可。我们也可以调用Loader.extractResource()
在调用 Loader.getPlatformName()
之前,在 JAR 文件中包含的相关库文件(可能具有基于 System.load()
的文件名)将其提取到临时文件中在上面。当我们不需要将所有内容合并到一个大文件中时,这就是 JavaCPP 自动为每个类执行的操作。
编辑:最新版本的 JavaCPP 和 JavaCV 可以从资源 native 库中提取和加载,如 FaceApplet sample 所示。 。不再需要搞乱静态库了。
关于java - 可运行的 JavaCV 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9127323/