一尘不染

如何在Linux下使用命令行在Java下构建OpenCV?(将在MapReduce中使用它)

java

最近,我正在为我的毕业设计尝试OpenCV。在Windows环境下,我取得了一些成功。而且由于OpenCV的Windows软件包附带了预构建的库,因此我不必担心如何构建它们。但是由于该项目假设要在CentOS作为每个节点的主机OS的群集上运行,所以我必须知道如何正确编译并在Linux环境下运行这些库。

我已经使用VirtualBox设置了VM,并在其上安装了Ubuntu
13.04。但是到目前为止,我仍然找不到一种方法来调整CMakeList的设置以使Java成为构建目标。(一个jar和一个本机库,因此我可以在MapReduce程序中导入和使用它们)以下是OpenCV桌面Java的官方教程

http://docs.opencv.org/doc/tutorials/introduction/desktop_java/java_dev_intro.html

有关编译的部分非常简短。所以我还是不太明白。是因为我错过了对Java的依赖吗?我已经安装了JVM(Jre-7u7)。还是因为我没有正确配置CMakeList.txt?

这是我到目前为止所做的事情,除了它是完全干净的Ubuntu

  1. 已安装vim
  2. 已安装g ++
  3. 已安装cmake
  4. 安装的cmake-curses-gui
  5. 安装的Java7 JVM
  6. 下载适用于Linux的OpenCV软件包

目标环境是将每个节点的CentOS用作主机OS的集群,并且该项目是MapReduce程序。

提前致谢。


阅读 239

收藏
2020-12-03

共1个答案

一尘不染

可能您缺少的是ant,这是一个面向Java的构建工具。

当你去:

cmake -D BUILD_SHARED_LIBS=OFF ../opencv-2.4.5/

(即您要在哪里配置机器的make),请查看“ java ”部分。它应该说像这样(可能具有不同的路径/版本):

--   Java:
--     ant:                         /usr/bin/ant (ver 1.8.2)
--     JNI:                         /usr/lib/jvm/java-6-openjdk/include /usr/lib/jvm/java-6-openjdk/include /usr/lib/jvm/java-6-openjdk/include
--     Java tests:                  YES

当我第一次运行cmake时,我有以下内容:

--   Java:
--     ant:                         NO
--     JNI:                         NO
--     Java tests:                  YES

这表明找不到它ant,因此没有创建.jar文件。我只使用存储库中的版本:

sudo apt-get install ant

使用以上选项,我再次运行了cmake,它获得了通往ant的路径(并且我免费获得了JNI!)。

注意: 您可能想相当仔细地阅读cmake的输出,因为它告诉您它将在计算机上构建的内容,并且可能缺少一些库。

如果发现JNI仍然丢失。

cmake(通常是?首先?很方便?可以解释为?)正在寻找jni.h,这应该特别明确。$JAVA_HOME/include/jni.h 因此,您需要将$
JAVA_HOME设置为jdk的主文件夹。

我使用了which javac然后ls -l遵循了一系列符号链接,以标识我的Java 1.7安装位置。您还可以使用locate jni.h和整理树,或者只是环顾四周/usr/lib/jvm或类似。

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

您可能想检查一下是否有正确的方法

ls $JAVA_HOME/bin/javac
/usr/lib/jvm/java-7-openjdk-amd64/bin/javac

ls $JAVA_HOME/include/jni.h
/usr/lib/jvm/java-7-openjdk-amd64/include/jni.h

有趣的是,当我再次运行cmake命令时,它选择了另一个JNI文件夹:

--     JNI:                         /usr/lib/jvm/java-7-openjdk-amd64/include /usr/lib/jvm/java-7-openjdk-amd64/include /usr/lib/jvm/java-7-openjdk-amd64/include

一旦知道了,运行make命令。如果您痴迷地观看,将会看到一堆.java文件杂乱无章。无论哪种方式,您最终都会在./bin文件夹中得到一个.jar文件。(在我的情况下,它被opencv-245.jar称为是我下载的代码的版本)。

2020-12-03