《Java图像处理:基于OpenCV与JVM》 ——1.2 编写你的第一个OpenCV Java程序

举报
华章计算机 发表于 2020/02/20 19:29:01 2020/02/20
【摘要】 本节书摘来自华章计算机《Java图像处理:基于OpenCV与JVM》 —— 书中第1章,第1.2节,作者是[法] 尼古拉斯·莫德奇克(Nicolas Modrzyk) ,魏 兰 潘婉琼 译 。

1.2 编写你的第一个OpenCV Java程序

  问题定义

在通过Leiningen设置的Java项目中,直接使用OpenCV库。

在利用OpenCV运行Java代码之前,有一个令人头疼的问题(自己编译OpenCV封装时),希望这一步能够越简单越好。

  解决方法

1.1节介绍了Leiningen的基本环境配置。这一节介绍如何添加对OpenCV C++库和Java封装的依赖。

  工作原理

第一个OpenCV例子将使用Leiningen项目模板来配置,其中project.clj文件和文件夹已经创建完毕。Leiningen项目模板不需要单独下载,可以通过在创建新项目时使用Leiningen的集成命令new来调用。

为了在你的机器上创建该项目,在命令行中运行lein命令。

无论是在Windows还是Mac中,这个命令都会输出:

 image.png

以上命令做了两件事情:

1.创建了一个新的项目文件夹,叫作hellocv。

2.根据名为jvm-opencv的模板,在相关的文件夹中创建了目录和文件。

命令运行完之后,相对简单的项目文件就自动生成了。

 image.png

这个看起来好像不是很令人印象深刻,但是这些文件和上一个攻略中的两个文件基本一样,都是一个项目描述文件和一个Java文件。

project.clj文件的内容与之前有所不同:

 image.png

也许你会马上注意到有三行从未见过的内容。

首先是repositories区域,这是一个新的区域,用于查找依赖。这里填写的内容是作者存储OpenCV构建文件的公用地址。

OpenCV的核心依赖以及本地依赖都已被编译好,并且上传至该公共区域供你使用。

这两个依赖分别是:

opencv

opencv-native

你也许会问,为什么需要两个依赖呢?

opencv-native是OpenCV针对不同平台的C++代码,例如MacOS、Windows或Linux的平台相关依赖。opencv是平台无关的Java封装,用来调用不同平台的C++代码。

当你编译OpenCV时,这也是OpenCV代码传送的方式。

为了方便起见,打包好的opencv-native中包含针对Windows、Linux和MacOS的所有源代码。

HelloCv.java文件中的Java代码位于Java文件夹中,是一个类似于helloworld的简单例子,会直接加载OpenCV的源代码库。内容如下所示:

 image.png

image.png

 

 

这段代码做了什么呢?

①它告诉Java运行时利用loadLibrary来加载native opencv库。这是使用OpenCV的必要步骤,每次运行你的应用时都要调用一次。

②通过Java对象,创建了一个Mat对象。Mat本质上是一个图像存储器,像矩阵一样,这里我们设置它的尺寸为3×3:高度为3个像素,宽度为3个像素。每个像素的类型是8UC1,这个奇怪的名字代表着包含8个位的无符号(8U)单通道(C1)整数。

③最终输出Mat(矩阵)对象中的内容。

和之前一样,这个项目是可以直接被运行的,无论你使用什么平台,lein run命令都可以完成任务。

 image.png

该命令输出以下内容:

 image.png

 

这里的1和0代表着创建的矩阵对象的实际内容。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。