Java调⽤OpenCV(含简单⼈脸识别和图像灰度处理的⽰例)
⼀、前⾔
本来打算下午,进⾏数据结构学习,但是啃了⼀上午⾼数之后,突然不想看书了,就打开电脑学了学设计模式,然后⽆意间发现OpenCV,于是进⾏了简单的学习。
⼆、介绍
1. 什么是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的步骤
参考:
(1) 下载OpenCv包
下载之后进⾏执⾏安装。得到如下的安装包;
(2)创建⼀个maven项⽬(springboot也⾏),并引⼊依赖。并将ddl动态加载库和jar包放⼊resources⾥⾯,
(3)测试
package learn.opencv;
import java.awt.*;
import java.awt.Point;
import java.URL;
import *;
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 class SimpleTest {
// 灰度处理
public static void main(String[]args)throws Exception {
/
/ 解决awt报错问题
System.setProperty("java.awt.headless","false");
System.out.Property("java.library.path"));
// 加载动态库
URL url = SystemResource("lib/opencv/opencv_java452.dll");
System.Path());
// 读取图像
Mat image =imread("E:\\IdeaProjects\\java-base\\src\\main\\resources\\test.png");
pty()){
throw new Exception("image is empty");
}
/
/ imshow("Original Image", image);
// 创建输出单通道图像
Mat grayImage =new ws(), ls(), 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_l");
// 在图⽚中检测⼈脸
MatOfRect faceDetections =new MatOfRect();
faceDetector.detectMultiScale(faceImag,faceDetections);
Rect[] rects = Array();
if(rects != null && rects.length >=1){
for(Rect rect : rects){
}
}
imshow("⼈脸检测图⽚",faceImag);
waitKey();
}
}
效果:
另外,还可以调⽤摄像头进⾏动态捕捉⼈脸。参考⽂章如下。
>rectangle函数opencv
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论