JavaCV人脸识别三部曲之三:识别和预览

本文介绍了一种使用JavaCV进行人脸识别的方法,包括通过CascadeClassifier检测人脸,结合RecognizeService进行识别,并在预览窗口显示识别结果。代码示例展示了DetectAndRecognizeService类的实现,涉及模型下载、初始化、帧处理和资源释放。最后,通过PreviewCameraWithIdentify类实现了本地窗口预览功能,展示检测和识别后的视频帧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • @return 相同尺寸的灰度图片的MAT对象

*/

static Mat buildGrayImage(Mat src) {

return new Mat(src.rows(), src.cols(), CV_8UC1);

}

/**

  • 初始化操作,例如模型下载

  • @throws Exception

*/

void init() throws Exception;

/**

  • 得到原始帧,做识别,添加框选

  • @param frame

  • @return

*/

Frame convert(Frame frame);

/**

  • 释放资源

*/

void releaseOutputResource();

}

  • 然后就是DetectService的实现类DetectAndRecognizeService .java,功能是用摄像头的一帧图片检测人脸,再拿检测到的人脸给RecognizeService做识别,完整代码如下,有几处要注意的地方稍后提到:

package com.bolingcavalry.grabpush.extend;

import lombok.extern.slf4j.Slf4j;

import org.bytedeco.javacpp.Loader;

import org.bytedeco.javacv.Frame;

import org.bytedeco.javacv.OpenCVFrameConverter;

import org.bytedeco.opencv.opencv_core.*;

import org.bytedeco.opencv.opencv_objdetect.CascadeClassifier;

import java.io.File;

import java.net.URL;

import java.util.Map;

import static org.bytedeco.opencv.global.opencv_imgproc.*;

/**

  • @author willzhao

  • @version 1.0

  • @description 音频相关的服务

  • @date 2021/12/3 8:09

*/

@Slf4j

public class DetectAndRecognizeService implements DetectService {

/**

  • 每一帧原始图片的对象

*/

private Mat grabbedImage = null;

/**

  • 原始图片对应的灰度图片对象

*/

private Mat grayImage = null;

/**

  • 分类器

*/

private CascadeClassifier classifier;

/**

  • 转换器

*/

private OpenCVFrameConverter.ToMat converter = new OpenCVFrameConverter.ToMat();

/**

  • 检测模型文件的下载地址

*/

private String detectModelFileUrl;

/**

  • 处理每一帧的服务

*/

private RecognizeService recognizeService;

/**

  • 为了显示的时候更加友好,给每个分类对应一个名称

*/

private Map<Inte

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值