zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

从零开发一款相机APP 第十四篇: 人脸识别

App开发 一款 相机 人脸识别 第十四
2023-06-13 09:16:05 时间
本课程内容由 @公众号:小驰笔记出品,欢迎关注公众号,获取更多交流信息~
欢迎访问个人博客:www.xiaochibiji.com

一、Android 原生人脸检测

1、判断检测平台是否支持人脸检测

//获取支持的人脸检测模式
int[] faceDetectModes = Characteristics.get(CameraCharacteristics
                    .STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES);
 
//支持最大检测人脸数量
 Characteristics.get(CameraCharacteristics.STATISTICS_INFO_MAX_FACE_COUNT);
 int mFaceDetectMode = CaptureRequest.STATISTICS_FACE_DETECT_MODE_OFF;
 
for (int i = 0; i < faceDetectModes.length; i++) {
     int face = faceDetectModes[i];
      //判断人脸支持程度级别
     if (face == CaptureRequest.STATISTICS_FACE_DETECT_MODE_FULL || face == CaptureRequest.STATISTICS_FACE_DETECT_MODE_SIMPLE) {
                    Log.i(TAG, "相机硬件支持人脸检测---" + face);
                    mFaceDetectMode = CaptureRequest.STATISTICS_FACE_DETECT_MODE_FULL;
                    break;
                }
            }
            if (mFaceDetectMode == CaptureRequest.STATISTICS_FACE_DETECT_MODE_OFF) {
                Log.i(TAG, "相机硬件不支持人脸检测");
                return;
            }

2、CaptureRequest 设置人脸检测级别

previewRequestBuilder.set(CaptureRequest.STATISTICS_FACE_DETECT_MODE, 
                 CameraCharacteristics.STATISTICS_FACE_DETECT_MODE_SIMPLE);//设置人脸检测级别

3、CaptureResult 中获取人脸检测信息

Face faces[] = result.get(CaptureResult.STATISTICS_FACES);
if (faces.length > 0) {
     //检测到有人脸,控制相机进行拍照操作
 }

二、第三方算法

百度、商汤、arcsoft、旷世等

APP层集成第三方(Arcsoft)人脸算法,前面专门写过2篇相关文章。

1、“全网首发:Android Camera2 集成人脸识别算法”

https://mp.weixin.qq.com/s/RZy6i3Ger8Vhr4V_-ABWmA

2、“Arcsoft人脸识别算法_Camera1、Camera2、CameraX_API的使用”

https://mp.weixin.qq.com/s/jYWVu8fkcj2sTjnl78un-A

深圳上班,

从事Android Camera相关软件开发工作,

公众号记录生活和工作的点滴,