一、前言
本来打算下午,进行数据结构学习,但是啃了一上午高数之后,突然不想看书了,就打开电脑学了学设计模式,然后无意间发现OpenCV,于是进行了简单的学习。
二、介绍
- 什么是OpenCV
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。 [1] 它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
OpenCV用C++语言编写,它具有C ++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS,OpenCV主要倾向于实时视觉应用,并在可用时利用MMX和SSE指令, 如今也提供对于C#、Ch、Ruby,GO的支持。
主要应用:人脸识别,文字识别(识别车牌号),图像处理,视频处理等
2.Java使用OpenCV的步骤
参考:springboot引入OpenCV
(1) 下载OpenCv包
下载地址
下载之后进行执行安装。得到如下的安装包;
(2)创建一个maven项目(springboot也行),并引入依赖。并将ddl动态加载库和jar包放入resources里面,
(3)测试
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73package learn.opencv; import java.awt.*; import java.awt.Point; import java.net.URL; import org.opencv.core.*; import org.opencv.imgproc.Imgproc; import org.opencv.objdetect.CascadeClassifier; import static org.opencv.highgui.HighGui.imshow; import static org.opencv.highgui.HighGui.waitKey; import static org.opencv.imgcodecs.Imgcodecs.imread; import static org.opencv.imgcodecs.Imgcodecs.imwrite; import static org.opencv.imgproc.Imgproc.COLOR_RGB2GRAY; import static org.opencv.imgproc.Imgproc.cvtColor; /** * @AUTHOR LYF * @DATE 2021/5/2 * @VERSION 1.0 * @DESC */ public class SimpleTest { // 灰度处理 public static void main(String[]args) throws Exception { // 解决awt报错问题 System.setProperty("java.awt.headless", "false"); System.out.println(System.getProperty("java.library.path")); // 加载动态库 URL url = ClassLoader.getSystemResource("lib/opencv/opencv_java452.dll"); System.load(url.getPath()); // 读取图像 Mat image = imread("E:\IdeaProjects\java-base\src\main\resources\test.png"); if (image.empty()) { throw new Exception("image is empty"); } // imshow("Original Image", image); // 创建输出单通道图像 Mat grayImage = new Mat(image.rows(), image.cols(), CvType.CV_8SC1); // 进行图像色彩空间转换 cvtColor(image, grayImage, COLOR_RGB2GRAY); // imshow("Processed Image", grayImage); imwrite("E:\IdeaProjects\java-base\src\main\resources\hello.jpg", grayImage); // waitKey(); Mat faceImag = imread("E:\IdeaProjects\java-base\src\main\resources\images\face\face1.jpg"); // 人脸识别器 CascadeClassifier faceDetector = new CascadeClassifier("D:\OpenCV\opencv\sources\data\haarcascades\haarcascade_frontalface_alt.xml"); // 在图片中检测人脸 MatOfRect faceDetections = new MatOfRect(); faceDetector.detectMultiScale(faceImag,faceDetections); Rect[] rects = faceDetections.toArray(); if(rects != null && rects.length >= 1){ for (Rect rect : rects) { Imgproc.rectangle(faceImag,rect,Scalar.all(1)); } } imshow("人脸检测图片",faceImag); waitKey(); } }
效果:
另外,还可以调用摄像头进行动态捕捉人脸。参考文章如下。参考文章
最后
以上就是丰富水壶最近收集整理的关于Java调用OpenCV(含简单人脸识别和图像灰度处理的示例)的全部内容,更多相关Java调用OpenCV(含简单人脸识别和图像灰度处理内容请搜索靠谱客的其他文章。
发表评论 取消回复