Java 实现人脸检测,oppojava 后端面试几面

本文介绍了一个Java程序,利用OpenCV库进行人脸识别和人眼检测。通过加载分类器,程序可以检测输入图片中的人脸和眼睛,并在检测到的人脸和眼睛周围画出边界框。此外,还提供了图片裁剪、调整透明度和添加水印等辅助功能。
摘要由CSDN通过智能技术生成

1、DetectFace

package com.facedetect.func;

import org.opencv.core.*;

import org.opencv.imgcodecs.Imgcodecs;

import org.opencv.imgproc.Imgproc;

import org.opencv.objdetect.CascadeClassifier;

/**

  • @Auther: DarkKing

  • @Date: 2019/10/2 11:06

  • @Description:

*/

public class DetectFace {

//定义程序的基础路径

private String basePath =System.getProperty("user.dir");

//人眼识别分类器路径

private String eyeConfigPath=basePath+"\src\com\facedetect\config\haarcascade_eye_tree_eyeglasses.xml";

//人脸识别分类器路径

private String faceConfigPath=basePath+"\src\com\facedetect\config\haarcascade_frontalface_alt2.xml";

static{

// 载入 opencv 的库

String opencvpath = System.getProperty("user.dir") + "\libs\x64\";

String opencvDllName = opencvpath + Core.NATIVE_LIBRARY_NAME + ".dll";

System.load(opencvDllName);

}

/**

  • opencv 实现人脸识别

  • @param imagePath

  • @param outFile

  • @throws Exception

*/

public void detectFace(String imagePath, String outFile) throws Exception

{

System.out.println("Running DetectFace ...,config path is "+faceConfigPath);

String basePath =System.getProperty("user.dir");

String path= basePath+ "\src\com\facedetect\tmp\";

// 从配置文件 lbpcascade_frontalface.xml 中创建一个人脸识别器,该文件位于 opencv 安装目录中,为了方便从安装方便放到了程序路径里

CascadeClassifier faceDetector = new CascadeClassifier(faceConfigPath);

//创建图片处理对象

Mat image = Imgcodecs.imread(imagePath);

// 在图片中检测人脸

MatOfRect faceDetections = new MatOfRect();

//多条件结果检测

faceDetector.detectMultiScale(image, faceDetections);

System.out.println(String.format("Detected %s faces", faceDetections.toArray().length));

//检测结果集

Rect[] rects = faceDetections.toArray();

// 在每一个识别出来的人脸周围画出一个方框

for (int i = 0; i < rects.length; i++) {

Rect rect = rects[i];

Imgproc.rectangle(image, new Point(rect.x-2, rect.y-2),

new Point(rect.x + rect.width, rect.y + rect.height),

new Scalar(0, 255, 0));

Mat copy = new

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值