一、人臉錄入
1、調(diào)用 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:獲取特征值需要的參數(shù)
FaceEngine.ASF_FACE_DETECT:人臉檢測 FaceEngine.ASF_FACE3DANGLE:獲取人臉的三維角度
FaceEngine.ASF_LIVENESS:獲取是否是活體
2、調(diào)用 detectFaces 進(jìn)行 圖像數(shù)據(jù)/預(yù)覽數(shù)據(jù)處理 (人臉檢測)
faceEngine.detectFaces(nv21, previewSize.width, previewSize.height, FaceEngine.CP_PAF_NV21, faceInfoList)
(1)nv21:圖片預(yù)覽的nv21數(shù)據(jù)
(2)previewSize:攝像頭預(yù)覽尺寸
(3)faceInfoList:人臉數(shù)據(jù)列表
3、調(diào)用 process 接口進(jìn)行人臉信息檢測 (人臉信息檢測)
這一步獲取到人臉的基本信息,如果檢測到的人臉是活體,且三維角度符合{pitch(-8 ~ -4,-2 ~ 2 , 4 ~ 8 ) , yaw( -25 ~ -15 , -5 ~ 5 , 15 ~ 25 ) , roll( -95 ~ -85 )},則進(jìn)行下一步
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:圖片預(yù)覽的nv21數(shù)據(jù)
(2)previewSize:攝像頭預(yù)覽尺寸
(3)faceInfoList:人臉數(shù)據(jù)列表
(4)FaceEngine.ASF_FACE3DANGLE:獲取人臉的三維角度
FaceEngine.ASF_LIVENESS:獲取是否是活體
(5)face3DAngleList:人臉3維信息列表
(5)faceLivenessInfoList:活體信息列表
4、調(diào)用 extractFaceFeature 接 口進(jìn)行人臉特征提取 (獲取人臉特征值)
extractFaceFeature 方法用于獲取人臉的特征值,該數(shù)據(jù)可以用于人臉對比。一般人臉庫中只需保存人臉特征值跟人臉圖片即可
faceEngine.extractFaceFeature(nv21Data, previewSize.width, previewSize.height, format, faceInfo, faceFeature)
(1)nv21Data:圖片預(yù)覽的nv21數(shù)據(jù)
(2)previewSize:攝像頭預(yù)覽尺寸
(3)faceInfo:人臉數(shù)據(jù)
(4)faceFeature:人臉特征值
5、保存人臉特征值及人臉圖片
二、人臉比對
1、調(diào)用 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:獲取特征值需要的參數(shù)
FaceEngine.ASF_FACE_DETECT:人臉檢測 FaceEngine.ASF_FACE3DANGLE:獲取人臉的三維角度
FaceEngine.ASF_LIVENESS:獲取是否是活體
2、調(diào)用 detectFaces 進(jìn)行 圖像數(shù)據(jù)/預(yù)覽數(shù)據(jù)處理 (人臉檢測)
faceEngine.detectFaces(nv21, previewSize.width, previewSize.height, FaceEngine.CP_PAF_NV21, faceInfoList)
(1)nv21:圖片預(yù)覽的nv21數(shù)據(jù)
(2)previewSize:攝像頭預(yù)覽尺寸
(3)faceInfoList:人臉數(shù)據(jù)列表
3、調(diào)用 extractFaceFeature 接 口進(jìn)行人臉特征提取 (獲取人臉特征值)
extractFaceFeature 方法用于獲取人臉的特征值,該數(shù)據(jù)可以用于人臉對比。
faceEngine.extractFaceFeature(nv21Data, previewSize.width, previewSize.height, format, faceInfo, faceFeature)
(1)nv21Data:圖片預(yù)覽的nv21數(shù)據(jù)
(2)previewSize:攝像頭預(yù)覽尺寸
(3)faceInfo:人臉數(shù)據(jù)
(4)faceFeature:人臉特征值
4、調(diào)用 compareFaceFeature 接 口進(jìn)行人臉比對
faceEngine.compareFaceFeature(faceFeature, tempFaceFeature, faceSimilar);