所以我在Windows上构建了一个视觉库,我在Windows上运行它并且运行正常。我用了命令:
java -jar LiftTracker.jar
我将我在windows上构建的.jar文件传输到Raspberry Pi,并进行了make install以安装opencv库。一旦我这样做,我尝试执行与上面相同的命令并提出错误:
java.lang.UnsatisfiedLinkError: no opencv_java310 in java.library.path.
我做了一些研究,发现我可以在-jar命令旁边运行这个命令
java -Djava.library.path=/path/to/dir
那仍然无效。这是我导入系统库的方式吗?我在代码中导入它的方式是:
static{
System.loadLibrary("opencv_java310");
}
我认为它不起作用的主要原因是因为我安装opencv的方式。有什么想法吗?
谢谢!
答案 0 :(得分:3)
您需要将“libopencv_java320.so”添加到您的java项目库中。它增加了大约1mb的图书馆。
您可以根据文档从源生成此.so文件:https://opencv-java-tutorials.readthedocs.io/en/latest/01-installing-opencv-for-java.html#install-opencv-3-x-under-linux
另一种方法是使用终端cmake手动构建源代码(它将下载大约4gb的opencv源代码),应该很简单:从opencv下载源代码:http://opencv.org/releases.html解压缩它并在解压缩目录中创建一个这样的/ build目录../opencv-3.2.0/build/。确保安装了cmake(Debian / Ubuntu apt get install cmake
)。在先前创建的/ build文件夹中打开终端,并在操作完成类型cmake -DBUILD_SHARED_LIBS=OFF ..
后键入:make -j8
,然后在3.2.0版本之后生成“libopencv_java_320” - 将此.so复制到您的java项目中。最后从同一构建目录中键入make install
以在系统上安装3.2.0库(如果需要,您可能希望先前删除旧版本)。更多信息:https://elbauldelprogramador.com/en/compile-opencv-3.2-with-java-intellij-idea/
与上述方法相同,但自动化将使用此脚本:https://github.com/milq/milq/blob/master/scripts/bash/install-opencv.sh脚本还在linux系统上安装opencv。从这个来源获取它:http://milq.github.io/install-opencv-ubuntu-debian/它比第二种方法做得更多,应该是最容易做到的。
在系统中安装opencv libs并将libopencv_java320.so复制到java项目后,你可以删除源代码(毕竟它几乎是4GB)。
然后你可以在你的主方法中使用下面的代码来加载windows .dll(如果你之前也添加了它)和linux .so:
String libName = "";
if (SystemUtils.IS_OS_WINDOWS) {
libName = "opencv_java320.dll";
} else if (SystemUtils.IS_OS_LINUX) {
libName = "libopencv_java320.so";
}
System.load(new File("./libs/".concat(libName)).getAbsolutePath());
答案 1 :(得分:1)
如果您在操作系统上构建OpenCV;
1)设置opencv和java变量
JAVA_HOME =包含JDK的目录
ANT_HOME =安装Apache Ant的目录
OPENCV_HOME =安装所有OpenCV的目录
OPENCV_LIB =包含所有本机JNI库的目录
OPENCV_JAR =包含java接口的JAR文件的路径 到OpenCV(通常命名为“opencv-320.jar”)
OPENCV_HOME将在/home/opencv-3.2.0
OPENCV_JAR将在$ {OPENCV_HOME} /build/bin/opencv-320.jar
OPENCV_LIB将在$ {OPENCV_HOME} / build / lib
2)加载本机库
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
3)运行您的应用程序
java -Djava.library.path=${OPENCV_LIB} -jar myapp.jar
https://github.com/WPIRoboticsProjects/GRIP-code-generation/tree/master/java