当前位置: 首页 > 面试题库 >

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

徐洋
2023-03-14
问题内容

最近,我正在为我的毕业设计尝试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程序。

提前致谢。


问题答案:

可能您缺少的是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称为是我下载的代码的版本)。



 类似资料:
  • 本文向大家介绍Windows7下如何在命令行使用MySQL,包括了Windows7下如何在命令行使用MySQL的使用技巧和注意事项,需要的朋友参考一下 我在Win7下安装的MySQL版本是mysql-5.0.22-win32 1、在Win7环境下安装MySQL,关于安装方法可以参考文章: Win7系统安装MySQL5.5.21图解教程、win7安装MySql 2、将MySQL的安装路径下的bin加

  • 本文向大家介绍如何在Linux中使用diff命令,包括了如何在Linux中使用diff命令的使用技巧和注意事项,需要的朋友参考一下 diff命令逐行分析并显示两个文件之间的更改列表。作为一种特殊情况,diff将标准输入的副本与其自身进行比较。本文介绍“如何在Linux中使用diff命令。 “ diff”命令的期货– 识别一个文件版本之间的更改 比较两个配置或程序文件 创建一个可以与Linux /

  • 正如独立jar的文档所述,我试图为我的特性提供参数,但不知道如何使其工作。我错过了什么? 我的命令行: 空手道配置。js TestArgs。功能:测试参数 我没有得到任何打印:java-jarc:\karate\karate-0.9。1.jar-a myKey1=myValue1 TestArgs。特色 10:32:57.904[主]信息网。凭直觉。空手道。内蒂。主要-空手道版本:0.9。1. 1

  • 问题内容: 我想创建两个文件的差异。我尝试在Java中搜索可完成此操作的代码,但是没有找到任何简单的代码/实用程序代码。因此,我想如果我能以某种方式从我的Java代码中运行linux diff / sdiff命令并使它返回一个存储diff的文件,那就太好了。 假设有两个文件fileA和fileB。我应该能够通过我的Java代码将它们的差异存储在名为fileDiff的文件中。然后从fileDiff提

  • 本文向大家介绍linux下source命令使用详解,包括了linux下source命令使用详解的使用技巧和注意事项,需要的朋友参考一下 Linux Source命令及脚本的执行方式解析 当我修改了/etc/profile文件,我想让它立刻生效,而不用重新登录;这时就想到用source命令,如:source /etc/profile 对source进行了学习,并且用它与sh 执行脚本进行了对比,现在

  • 问题内容: 我创建了一个独立的Java应用程序,试图在Ubuntu 10.04终端中使用“ cd”命令更改目录。我使用了以下代码。 但是上面的代码给出了以下错误 谁能告诉我如何实施? 问题答案: 没有称为的可执行文件,因为它 不能 在单独的进程中实现。 问题在于,每个进程都有自己的当前工作目录,将其实现为一个单独的进程只会更改 该 进程的当前工作目录。 在Java程序中,您 不能 更改当前的工作目