java - 可运行的 JavaCV 项目

标签 java dll opencv jar

我正在使用 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/

相关文章:

c++ - 使用 cmake 在项目中链接 Opencv

python - 使用Python OpenCV在图像路径(中文,日文,韩文)中读取/加载带有Unicode字符的图像

java - 找不到类型 Material 的属性 getMaterials!和创建名称为 'materialRepository' : 的 bean 时出错

dll - 在 dll 中使用 GetObject() 和 vb6.0

mysqld.exe - 找不到入口点

java - jni4net 无法在 Java 应用程序中加载 DLL

OpenCV GetCapture属性 : Identifier Not Found?

java - 通用返回类型和 lambda 函数参数

第二次运行时 JavaFX 卡住 Mac

java - 在java中完全覆盖克隆对象