《Java图像处理:基于OpenCV与JVM》 ——1.2 编写你的第一个OpenCV Java程序
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中,这个命令都会输出:
以上命令做了两件事情:
1.创建了一个新的项目文件夹,叫作hellocv。
2.根据名为jvm-opencv的模板,在相关的文件夹中创建了目录和文件。
命令运行完之后,相对简单的项目文件就自动生成了。
这个看起来好像不是很令人印象深刻,但是这些文件和上一个攻略中的两个文件基本一样,都是一个项目描述文件和一个Java文件。
project.clj文件的内容与之前有所不同:
也许你会马上注意到有三行从未见过的内容。
首先是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的源代码库。内容如下所示:
这段代码做了什么呢?
①它告诉Java运行时利用loadLibrary来加载native opencv库。这是使用OpenCV的必要步骤,每次运行你的应用时都要调用一次。
②通过Java对象,创建了一个Mat对象。Mat本质上是一个图像存储器,像矩阵一样,这里我们设置它的尺寸为3×3:高度为3个像素,宽度为3个像素。每个像素的类型是8UC1,这个奇怪的名字代表着包含8个位的无符号(8U)单通道(C1)整数。
③最终输出Mat(矩阵)对象中的内容。
和之前一样,这个项目是可以直接被运行的,无论你使用什么平台,lein run命令都可以完成任务。
该命令输出以下内容:
这里的1和0代表着创建的矩阵对象的实际内容。
- 点赞
- 收藏
- 关注作者
评论(0)