人脸识别流程

字数 623阅读 565

一、人脸录入

1、调用 init 初始化 SDK

faceEngine.init(context, FaceEngine.ASF_DETECT_MODE_VIDEO, ConfigUtil.getFtOrient(this),
                16, MAX_DETECT_NUM, FaceEngine.ASF_FACE_RECOGNITION | FaceEngine.ASF_FACE_DETECT | FaceEngine.ASF_FACE3DANGLE| FaceEngine.ASF_LIVENESS);

(1) context:上下文
(2) FaceEngine.ASF_DETECT_MODE_VIDEO:采用视频流方式获取
(3)FaceEngine.ASF_FACE_RECOGNITION:获取特征值需要的参数
FaceEngine.ASF_FACE_DETECT:人脸检测 FaceEngine.ASF_FACE3DANGLE:获取人脸的三维角度
FaceEngine.ASF_LIVENESS:获取是否是活体

2、调用 detectFaces 进行 图像数据/预览数据处理 (人脸检测)

faceEngine.detectFaces(nv21, previewSize.width, previewSize.height, FaceEngine.CP_PAF_NV21, faceInfoList)

(1)nv21:图片预览的nv21数据
(2)previewSize:摄像头预览尺寸
(3)faceInfoList:人脸数据列表

3、调用 process 接口进行人脸信息检测 (人脸信息检测)

这一步获取到人脸的基本信息,如果检测到的人脸是活体,且三维角度符合{pitch(-8 ~ -4,-2 ~ 2 , 4 ~ 8 ) , yaw( -25 ~ -15 , -5 ~ 5 , 15 ~ 25 ) , roll( -95 ~ -85 )},则进行下一步

faceEngine.process(nv21, previewSize.width, previewSize.height, FaceEngine.CP_PAF_NV21, faceInfoList, FaceEngine.ASF_FACE3DANGLE | FaceEngine.ASF_LIVENESS);
faceEngine.getFace3DAngle(face3DAngleList);
faceEngine.getLiveness(faceLivenessInfoList);

(1)nv21:图片预览的nv21数据
(2)previewSize:摄像头预览尺寸
(3)faceInfoList:人脸数据列表
(4)FaceEngine.ASF_FACE3DANGLE:获取人脸的三维角度
FaceEngine.ASF_LIVENESS:获取是否是活体
(5)face3DAngleList:人脸3维信息列表
(5)faceLivenessInfoList:活体信息列表

4、调用 extractFaceFeature 接 口进行人脸特征提取 (获取人脸特征值)

extractFaceFeature 方法用于获取人脸的特征值,该数据可以用于人脸对比。一般人脸库中只需保存人脸特征值跟人脸图片即可

faceEngine.extractFaceFeature(nv21Data, previewSize.width, previewSize.height, format, faceInfo, faceFeature)

(1)nv21Data:图片预览的nv21数据
(2)previewSize:摄像头预览尺寸
(3)faceInfo:人脸数据
(4)faceFeature:人脸特征值

5、保存人脸特征值及人脸图片

二、人脸比对

1、调用 init 初始化 SDK

faceEngine.init(context, FaceEngine.ASF_DETECT_MODE_VIDEO, ConfigUtil.getFtOrient(this),
                16, MAX_DETECT_NUM, FaceEngine.ASF_FACE_RECOGNITION | FaceEngine.ASF_FACE_DETECT | FaceEngine.ASF_FACE3DANGLE| FaceEngine.ASF_LIVENESS);

(1) context:上下文
(2) FaceEngine.ASF_DETECT_MODE_VIDEO:采用视频流方式获取
(3)FaceEngine.ASF_FACE_RECOGNITION:获取特征值需要的参数
FaceEngine.ASF_FACE_DETECT:人脸检测 FaceEngine.ASF_FACE3DANGLE:获取人脸的三维角度
FaceEngine.ASF_LIVENESS:获取是否是活体

2、调用 detectFaces 进行 图像数据/预览数据处理 (人脸检测)

faceEngine.detectFaces(nv21, previewSize.width, previewSize.height, FaceEngine.CP_PAF_NV21, faceInfoList)

(1)nv21:图片预览的nv21数据
(2)previewSize:摄像头预览尺寸
(3)faceInfoList:人脸数据列表

3、调用 extractFaceFeature 接 口进行人脸特征提取 (获取人脸特征值)

extractFaceFeature 方法用于获取人脸的特征值,该数据可以用于人脸对比。

faceEngine.extractFaceFeature(nv21Data, previewSize.width, previewSize.height, format, faceInfo, faceFeature)

(1)nv21Data:图片预览的nv21数据
(2)previewSize:摄像头预览尺寸
(3)faceInfo:人脸数据
(4)faceFeature:人脸特征值

4、调用 compareFaceFeature 接 口进行人脸比对

faceEngine.compareFaceFeature(faceFeature, tempFaceFeature, faceSimilar);

推荐阅读更多精彩内容