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

2022-09-03 08:57:10

最近,我正在为我的毕业项目尝试OpenCV。我在Windows环境下取得了一些成功。而且由于OpenCV的Windows软件包带有预构建的库,因此我不必担心如何构建它们。但是,由于该项目假设在一个集群上运行,CentOS作为每个节点的主机操作系统,我必须知道如何正确编译,并在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. 下载 OpenCV package for Linux

目标环境是以CentOS作为每个节点的主机操作系统的集群,该项目是一个MapReduce程序。

提前致谢。


答案 1

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

当您去时:

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

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

sudo apt-get install ant

我再次运行了cmake,使用上述选项,这得到了蚂蚁的路径(我免费得到了JNI!

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

如果您发现 JNI 仍然缺失。

cmake是(主要是?第一个?方便吗?可以解释为?)寻找jni.h,这应该是特别的,所以你需要设置$JAVA_HOME到你的jdk的主文件夹。$JAVA_HOME/include/jni.h

我使用然后遵循一系列符号链接,以确定我的java 1.7安装位置。您也可以使用和处理树,或者只是环顾四周或类似。which javacls -llocate 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

获得该命令后,运行该命令。如果你痴迷地观看,你会看到一堆.java文件蹒跚而过。无论哪种方式,您最终都会在 ./bin 文件夹中得到一个.jar文件。(在我的情况下,它被称为,因为这是我下载的代码的版本)。makeopencv-245.jar


答案 2

对于从谷歌指向这里的人:

如果您的JRE在运行java教程后崩溃,那么您很可能也安装了python绑定(cv2.so)。您将不得不在没有这些绑定的情况下重新制作OpenCV

cmake -DBUILD_SHARED_LIBS=OFF -D BUILD_NEW_PYTHON_SUPPORT=NO

这为我解决了问题。


推荐