前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android Camera1中的人脸检测

Android Camera1中的人脸检测

作者头像
雪月清
发布2020-08-05 14:51:57
1.6K0
发布2020-08-05 14:51:57
举报
文章被收录于专栏:雪月清的随笔雪月清的随笔

检查功能是否支持

在开启人脸检测功能之前,必须检查一下该摄像头是否支持人脸检测,通过接口:

代码语言:javascript
复制
// 如果返回0,则表示不支持
Parameters#getMaxNumDetectedFaces()

开启/停止人脸检测

开启和停止人脸检测都是直接调用Camera对象提供的接口即可,使用起来是非常简单的,需要注意的是两个接口需要在预览期间调用,即启动预览后才能开启人脸检测,停止预览前关闭人脸检测

从源码中可以看到两个接口必须成对出现,连续调用startFaceDetection是会出现异常的。而且默认的检测方式为:

代码语言:javascript
复制
 /**
  * Hardware face detection. It does not use much CPU.
  */
private static final int CAMERA_FACE_DETECTION_HW = 0;

开启人脸检测功能后,会导致手动白平衡,手动对焦区域和测光区域的设置无效,因为此时Camera会基于识别到的人脸做自动白平衡,自动曝光和自动对焦处理。

在相机类app中,可以观察到在手动对焦和拍照的时候会停止绘制人脸框。

因为在调用autoFocus方法的时候,Camera会停止发送人脸检测的回调,当对焦完成或者调用cancelAutoFocus之后,人脸识别的回调才会继续。

拍照期间会停止预览,所以也不会有人脸的回调,在拍照结束,调用startPreview后,还必须再调用一次开启人脸检测的方法来重新进行人脸检测

人脸识别回调

通过向Camera注册FaceDetectionListener,可以获取到检测的人脸结果

通过Face对象,可以获得当前预览帧识别到的人脸信息,包括人脸区域,可信度评分,左右眼睛和嘴巴的坐标点等

代码语言:javascript
复制
Face#score表示人脸识别的可信度,值为[1, 100],
值越高,可信程度越高,在多张人脸的场景下通常都需要过滤掉评分比较低的结果

通过此接口拿到的人脸区域是基于sensor的坐标系,要在UI上绘制人脸框的时候,还需要转换一波,计算过程大致如下:

DEMO

绘制效果如下:

代码语言:javascript
复制
 https://github.com/sifutang/Camera1Demo.git
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 雪月清的随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
人脸识别
腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档