一、opencv 简介
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Java、Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法(百度百科)。
opencv采用C语言进行优化,而且,在多核机器上面,其运行速度会更快。它的一个目标是提供友好的机器视觉接口函数,从而使得复杂的机器视觉产品可以加速面世。该库包含了横跨工业产品检测、医学图像处理、安防、用户界面、摄像头标定、三维成像、机器视觉等领域的超过500个接口函数。
同时,由于计算机视觉与机器学习密不可分,该库也包含了比较常用的一些机器学习算法。或许,很多人知道,图像识别、机器视觉在安防领域有所应用。但,很少有人知道,在航拍图片、街道图片(例如google street view)中,要严重依赖于机器视觉的摄像头标定、图像融合等技术。
近年来,在入侵检测、特定目标跟踪、目标检测、人脸检测、人脸识别、人脸跟踪等领域,opencv可谓大显身手,而这些,仅仅是其应用的冰山一角。
二、opencv 安装
- 在 Windows 环境下 安装 OpenCV ,官网下载 OpenCV:OpenCV 官网
- 点击 Releases 选项下载 OpenCV ,如果下载过慢 可以使用迅雷下载。
3. 根据自己的需求下载 不同的版本,本教程使用 OpenCV -4.4.0
4. 下载成功 ,双击 opencv-4.4.0-vc14_vc15.exe 即可,安装导致的目录。
5. 进入到 \opencv\build目录中,由于本项目用于java 集成,因此 进入java 目录。
进入 java 目录如下,根据自己的系统 ,选择不同的 位数:
三、搭建 java 项目
1. 在 idea中新建 Springboot 项目,详细步骤不再赘述,结构入下:
四、 java 项目整合 OpenCV
1. java项目引入 opencv.jar 的 方式如下:
第一种方式: 在项目的 resource 下新建lib 目录,把 步骤 二 安装的 opencv 放到 lib目录下:
a. 在pom.xml 中 引入 opencv-440.jar 的jar 包。
<!-- 第一种方法: 引入 resources lib 下的 OpenCV jar包 -->
<dependency>
<groupId>org</groupId>
<artifactId>opencv</artifactId>
<scope>system</scope>
<systemPath>${project.basedir}\src\main\resources\lib\opencv-440.jar</systemPath>
</dependency>
b. 启动类中 ,修改 SpringApplication.run() 的方法,使用 headless 的模式,否则程序 报错。
Headless模式是在缺少显示屏、键盘或者鼠标时的系统配置。听起来不可思议,但事实上你可以在这中模式下完成不同的操作,甚至是用图形数据也可以。
@SpringBootApplication
public class OpenCVApplication {
public static void main(String[] args) {
// SpringApplication.run(OpenCVApplication.class,args);
SpringApplicationBuilder builder = new SpringApplicationBuilder(OpenCVApplication.class);
builder.headless(false).web(false).run(args);
}
}
然后在ide 的run--->VM Options里加上一句: -Djava.awt.headless=false
c. 在 程序中 通过 类加载器 引入 opencv_java440.dll 。
@Test
public void test02(){
URL url = ClassLoader.getSystemResource("lib/opencv_java440.dll");
System.load(url.getPath());
// System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
Mat mat = Mat.eye(4,4,CvType.CV_8UC1);
System.out.println(mat.dump());
}
d.执行代码进行测试,结果如下:
第二种方式:
1. 把 opencv-440.jar 的jar 包 通过idea 的 Modules 引入到项目中。
在 vm options 中配置 dll文件的绝对路径。
2.将 opencv_java440.dll
复制到 JAVA_HOME\jre\bin
目录下,如图:
3.java 程序测试
3.1 还原启动类:
@SpringBootApplication
public class OpenCVApplication {
public static void main(String[] args) {
SpringApplication.run(OpenCVApplication.class,args);
// SpringApplicationBuilder builder = new SpringApplicationBuilder(OpenCVApplication.class);
// builder.headless(false).web(false).run(args);
}
}
3.2 测试 opencv ,代码如下
@Test
public void test02(){
// URL url = ClassLoader.getSystemResource("lib/opencv_java440.dll");
// System.load(url.getPath());
System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
Mat mat = Mat.eye(4,4,CvType.CV_8UC2);
System.out.println(mat.dump());
}
结果如下: