在Linux中加载OpenCV库?

时间:2017-02-27 21:20:12

标签: java linux opencv

所以我在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的方式。有什么想法吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

您需要将“libopencv_java320.so”添加到您的java项目库中。它增加了大约1mb的图书馆。

  1. 您可以根据文档从源生成此.so文件:https://opencv-java-tutorials.readthedocs.io/en/latest/01-installing-opencv-for-java.html#install-opencv-3-x-under-linux

  2. 另一种方法是使用终端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/

  3. 与上述方法相同,但自动化将使用此脚本:https://github.com/milq/milq/blob/master/scripts/bash/install-opencv.sh脚本还在linux系统上安装opencv。从这个来源获取它:http://milq.github.io/install-opencv-ubuntu-debian/它比第二种方法做得更多,应该是最容易做到的。

  4. 在系统中安装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