android camera2识别人脸,Android 调用camera2 人脸识别api

本文介绍了在拍照预览阶段如何利用人脸识别技术,通过Camera API 实现人脸检测并根据检测结果调整聚焦区域,每20次检测触发拍照。关键点包括设置Face Detection Listener,启动Face Detection,以及根据人脸位置进行聚焦和拍照操作。

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

拍照预览时进行人脸识别,结果返回给callback函数

Preview.java

try {

mCamera.setPreviewDisplay(mHolder);

if(mOnFaceDetected != null){

mCamera.setFaceDetectionListener(mOnFaceDetected);

}

mCamera.startPreview();

Camera.Parameters params = mCamera.getParameters();

// start face detection only *after* preview has started

if(mOnFaceDetected != null){

if (params.getMaxNumDetectedFaces() > 0){

// camera supports face detection, so can start it:

mCamera.startFaceDetection();

Log.d("DEBUG", "Face detection started");

}

}

} catch (Exception e){

Log.d(TAG, "Error starting camera preview: " + e.getMessage());

}

Callback.Activity

OnCreate:...

mPreview.setOnFaceDetected(this);

...

callback函数:

private boolean focused = false;

private int faceDetectCount = 0;

@Override

public void onFaceDetection(Camera.Face[] faces, Camera camera) {

if (faces.length == 0) {

Log.i("face", "No faces detected");

} else if (faces.length > 0) {

int centerX = faces[0].rect.centerX();

int centerY = faces[0].rect.centerY();

Log.i("face", "Faces Detected : " +

centerX +"," + centerY);

faceDetectCount++;

if(centerX <= -450 && centerX >= -600 && centerY >= 250 && centerY <= 350){

if(!focused){

focusArea(-1000,-1000,1000,1000,750);

focused = true;

}else{

if(faceDetectCount % 20 == 0){

mCamera.stopFaceDetection();

takepic();

// icBack(mPreview);

}

}

}

// add function to draw rects on view/surface/canvas

//focusArea(faces[0].rect.left,faces[0].rect.top,faces[0].rect.right,faces[0].rect.bottom,100);

// takepic(mPreview);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值