我们都知道,OpenCV是基于C++的开源计算机视觉库,但是从2.4.4版本开始提供了Java绑定,也就是说,我们也可以使用Java来开发基于OpenCV的计算机视觉应用。目前,最新的版本是3.1.0,在本文中将会介绍如何中Ubuntu 16.04上搭建OpenCV for Java的开发环境,假设目前使用的是刚刚重装的Linux操作系统。

1. 配置Java环境

  在生成OpenCV的Makefile之前,cmake工具会检查当前系统中是否已经配置好了Java环境,以决定是否会生成Java开发相应的包。因此,我们首先要确认当前系统已经配置好了Java的开发环境,这一部分内容不属于本文的重点,请参看其他文章。

2. 安装编译依赖包

   在Linux下编译OpenCV需要依赖很多软件包,这些包对于以后进行计算机视觉应用时也需要使用。在Ubuntu下,可以直接使用apt-get工具轻松完成,对应的命令如下:

sudo apt-get install build-essential cmake git libgtk2.-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev python-dev python-numpy libttb2 libttb-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libdc1394--dev ant

3. 解压opencv-3.1.0源码包

  由于源码包的来源不同,压缩包的格式可能也会有所不同,主要有zip和tgz两种格式,可以分别用unzip和tar命令来解压,这里不再详细说明。本文中解压出来的文件夹顶层目录名称为:

opencv-3.1.

4. 创建编译输出文件夹

  为了防止编译的时候破坏opencv源码包的目录结构,一般都不推荐直接在源码包的顶级目录下执行源码的编译工作,通常是在该目录下面单独创建一个build文件夹,所有的编译中间文件和最终的目标文件都输出到这个文件中,过程如下:

cd opencv-3.1.
mkdir build
cd build

5. 生成Makefile文件

  首先请确认当前的工作目录为build文件夹,然后需要利用cmake工具来生成编译整个工程的Makefile文件,执行的命令如下:

cmake -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=/usr/local ../

但是,很不幸的是很大可能性此过程并不能成功,而是会因为在下载ippicv_linux_20151201.tgz第三方包的时候超时而生成Makefile失败。解决办法是从参考资料[1]提供的链接中下载此源码包,然后将其拷贝到opencv源码包的同级目录下,然后执行下面的命令:

ipp_file=../ippicv_linux_20151201.tgz             &&
ipp_hash=$(md5sum $ipp_file | cut -d" " -f1) &&
ipp_dir=3rdparty/ippicv/downloads/linux-$ipp_hash &&
mkdir -p $ipp_dir &&
cp $ipp_file $ipp_dir

说明:还有一种方法就是将IPP编译选项关闭,只需要在cmake命令中添加选项:

cmake -DWITH_IPP=OFF

  以上命令执行完成后,再重新执行之前的cmake命令,这样就可以成功实现Makefile文件的生成。如果成功生成了文件,那么请检查创建过程中的输出信息是否存在如下图所示的一行内容:

在其中的“To be built”行中指出了最终会编译的对应的模块,如果成功检测到了Java环境,那么一定存在“java”这个选项,如上图第3行所示。如果没有找到,则说明Java运行环境没有配置好,可以使用类似下面的命令重新配置一下:

export JAVA_HOME=/usr/lib/jvm/java-1.8.-openjdk-amd64

导出相应的环境变量以后,再重新执行cmake命令。

6. 编译源代码

  接下来,需要根据生成的Makefile规则执行源代码的编译过程,对于现在的多核系统,可以执行以下命令来实现并行编译:

make -j8

最终,会在“./bin/”目录下生成包含Java接口的JAR文件“opencv-310.jar”,会在“./lib/”目录下生成对应的动态链接库文件“libopencv_java310.so”,这两个文件就是使用Java开发基于OpenCV的计算机视觉应用时所用到的库文件。

7. 安装库文件

  最后,需要将生成的库文件安装到/usr/local目录下的对应子文件下,此过程需要管理员权限创建文件和文件夹,执行的命令如下:

sudo make install

Java开发相关的动态链接库文件和jar包位于目录:

/usr/local/share/OpenCV/java/

8. 测试

  接下来的工作就是在Eclipse上测试能否使用OpenCV库来开发Java计算机视觉应用程序。

(1) 创建工程,依次选择File -> New -> Java Project,如下图所示,填写工程名,然后点击Finish完成。

(2)配置工程属性。右键单击工程,选择“Properties”属性菜单。选择“Java Build Path”中的“Libraries”子选项卡,选择“Add Library...”按钮,在弹出的对话框中选择“User Library”类型,然后单击Next。

然后点击“New”按钮,在弹出的对话框中输入用户库的名字,比如“opencv-3.1.0”。接下来,我们需要将这个库关联到对应的JAR文件。选择“Edit”按钮,在弹出的文件选择对话框中,找到opencv-310.jar文件所在的路径,并选择该文件,确认。

接下来,展开JAR包,选中“Native Library Location”,然后点击旁边的“Edit”按钮,选择libopencv_java310.so所在的路径,即/usr/local/share/OpenCV/java文件夹。这样所有的属性都配置完成了,点击Finish即可。

(3) 编写测试代码。创建一个Sample类,然后输入以下代码。

 import org.opencv.core.*;
import org.opencv.imgcodecs.Imgcodecs; public class Sample {
static {System.loadLibrary(Core.NATIVE_LIBRARY_NAME);} public static void main(String[] args){
Mat m = Imgcodecs.imread("/home/tang/Pictures/baby.jpg");
System.out.println(m);
}
}

该程序会从本地文件系统中读取一张图片,并把数据存储到Mat类中,然后输出这个图片到信息。运行结果如下:

如果你看到了类似如上的信息,那么恭喜你,你的OpenCV Java开发环境已经配置好了!

参考资料:

[1] http://www.linuxfromscratch.org/blfs/view/svn/general/opencv.html

[2] http://developer.51cto.com/art/201503/469692.htm

[3] http://docs.opencv.org/2.4/doc/tutorials/introduction/desktop_java/java_dev_intro.html

Ubuntu 16.04配置OpenCV 3.1.0 for Java的更多相关文章

  1. ubuntu 16.04 安装opencv 2.4.13

    ubuntu 16.04 安装opencv 2.4.13 https://blog.csdn.net/u011557212/article/details/54706966?utm_source=it ...

  2. Ubuntu 16.04 安装opencv的各种方法(含opencv contrib扩展包安装方法)

    Ubuntu 16.04 安装opencv的各种方法(含opencv contrib扩展包安装方法) https://blog.csdn.net/ksws0292756/article/details ...

  3. ubuntu 16.04 安装 opencv +contrib (3.2.0) + python 3.5

    环境: - ubuntu 16.04 - OpenCV + contrib 3.2.0 (文中附下载链接) - Python 3.5 基于其他环境的配置应该大同小异. 没时间解释了,直接上车. 更新下 ...

  4. Ubuntu 16.04 上安装 CUDA 9.0 详细教程

    https://blog.csdn.net/QLULIBIN/article/details/78714596 前言: 本篇文章是基于安装CUDA 9.0的经验写,CUDA9.0目前支持Ubuntu1 ...

  5. Ubuntu 16.04配置国内高速apt-get更新源【转】

    转自:https://blog.csdn.net/twang0x80/article/details/79782753 Ubuntu 16.04下载软件速度有点慢,因为默认的是从国外下载软件,那就更换 ...

  6. Ubuntu 16.04配置国内高速apt-get更新源

    https://www.linuxidc.com/Linux/2017-11/148627.htm Ubuntu 16.04下载软件速度有点慢,因为默认的是从国外下载软件,那就更换到国内比较好的快速更 ...

  7. ubuntu 16.04 配置ssl

    Let's Encrypt 的服务相信很多人都知道了,我个人认为这是最好的免费 SSL 服务.下面内容即使如何在自己的网站上使用 Let's Encrypt 实现 SSL. 前提条件 自己拥有一个域名 ...

  8. Ubuntu 16.04 配置安卓5.1编译环境

    Ubuntu 16.04版本 电脑cpu必须是64位 硬盘分配大约100G的空间 1.ubuntu中更新源 $ sudo apt-get update 2.安装 openjdk-8-jdk $ sud ...

  9. Ubuntu 16.04配置vncviewer

    网上有各种各样的教程,既混乱又复杂.这是提供一个亲自测试可用的配置方案,十分简单,桌面环境选用xfce,Ubuntu版本是16.04. 1 安装 Xfce 和 TightVNC sudo apt in ...

随机推荐

  1. swift获取图片像素颜色值

    extension UIImage{ /** 获取图片中的像素颜色值 - parameter pos: 图片中的位置 - returns: 颜色值 */ func getPixelColor(pos: ...

  2. ios开发——实用技术篇Swift篇&多点触摸与手势识别

    多点触摸与手势识别 //点击事件 var atap = UITapGestureRecognizer(target: self, action: "tapDo:") self.vi ...

  3. 设置用户ID和设置组ID

    与一个进程关联的ID有6个或更多,如下图所示: 与每个进程相关联的用户ID和组ID 实际用户ID 实际组ID 我们实际是谁 有效用户ID 有效组ID 附加组ID 用于文件访问权限检索 保存的设置用户I ...

  4. extern的困惑

    摘自:http://blog.csdn.net/fxjtoday/article/details/6021845 如果想明白为什么需要extern, 需要从编译和链接讨论起, 现代编译器一般采用按文件 ...

  5. redis终于有比较大的进展了,redis3.0.1 稳定版本发布,支持集群。

    原文地址:https://raw.githubusercontent.com/antirez/redis/3.0/00-RELEASENOTES Redis 3.0 release notes --[ ...

  6. visual studio 因为文件过期重新编译项目

    最近visual studio总是莫名其妙的重新编译某个工程,  导致大量项目rebuild . 蛋都碎了... 查了好久, 这种无厘头的问题最烦了 参考这篇文章, http://blogs.msdn ...

  7. struts2.1笔记01:MVC框架思想浅层理解

      1. Struts 1是全世界第一个发布的MVC框架: 它由Craig McClanahan在2001年发布,该框架一经推出,就得到了世界上Java Web开发者的拥护,经过长达6年时间的锤炼,S ...

  8. 用对象型泛型和ArraysList写一个输入学员信息并展示

    题目:录入学员信息并保存,当录入学员的编号为0时结束,展示出学员信息 //student类 public class Student { public int id; public String na ...

  9. JQUERY 动态时钟

    <script type="text/javascript" src="script/jquery-1.8.3.min.js"></scrip ...

  10. C++之类的构造函数,不得不学明白的重点

    一.认识构造函数 当创建一个类类型对象时,类通过一个或者几个特殊的成员函数来控制对象的初始化,这种函数就是构造函数.它的任务就是用来初始化类对象的成员的,所以当创建类对象或者类对象被创建就会调用构造函 ...