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