# InspireFaceTest **Repository Path**: nevernone/inspire-face-test ## Basic Information - **Project Name**: InspireFaceTest - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-18 - **Last Updated**: 2025-12-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: inspireface ## README # hfacedetect hfacedetect基于[InspireFace](https://blog.csdn.net/weixin_40193776/article/details/140237324) 实现照片检测人脸信息及人脸动作判断,包含左摇头、右摇头、眨眼、张嘴、抬头5种动作。 hfacedetect库生成项目:[HFaceDetectTest](https://gitee.com/nevernone/hface-detect-test) ## 下载安装 ``` ohpm install hfacedetect ``` ## 需要权限 ``` ohos.permission.CAMERA ``` ## 使用方法 ``` import testNapi from 'hfacedetect/src/main/cpp/types/libhfacedetect' //检测实例初始化 private detectFuncAddr:number|null = testNapi.arkTSConstructor(getContext(this).resourceDir); aboutToDisappear(): void { //检测实例释放 if (this.detectFuncAddr){ testNapi.releaseDetect(this.detectFuncAddr); this.detectFuncAddr = null; } } //检测 testNapi.detect(caller,imgArrayBuffer,imgwidth,imgheight,1); //函数介绍 /** * 初始化人脸检测实例 * @param { bundlePath } app resfile bundle resource dir. * @returns { number|null } 返回人脸检测实例地址 */ arkTSConstructor: (bundlePath: string) => number | null; /** * 人脸检测 * @param { caller } 人脸检测实例地址 * @param { imgArrayBuffer } RGBA_8888图片ArrayBuffer * @param { imgwidth } 图片宽 * @param { imgheight } 图片高 * @param { returnFaceImage } 是否返回人脸照片 * @returns { Object } 返回人脸检测结果对象 DetectResultModel * interface DetectResultModel{ status:number,//检测状态,0:成功 -1:失败 returnImageWidth?:number,//faceNumber ==1 返回照片宽 returnImageHeight?:number,//faceNumber ==1 返回照片高 returnImageArrayBuffer?:ArrayBuffer,//faceNumber ==1 返回照片RGBA_8888 ArrayBuffer faceNumber:number,//人脸数目 faceShakeLeft:number,//faceNumber ==1 是否左摇头 0:否 1:是 faceShakeRight:number,//faceNumber ==1 是否右摇头 0:否 1:是 faceJawOpen:number,//faceNumber ==1 是否张嘴 0:否 1:是 faceHeadRaise:number,//faceNumber ==1 是否抬头 0:否 1:是 faceBlink:number,//faceNumber ==1 是否眨眼 0:否 1:是 faceQuality:number,//faceNumber ==1 照片质量 faceX:number,//faceNumber ==1 返回人脸x坐标 faceY:number,//faceNumber ==1 返回人脸y坐标 faceWidth:number,//faceNumber ==1 返回人脸宽 faceHeight:number,//faceNumber ==1 返回人脸高 faceRoll:number,//faceNumber ==1 欧拉角 roll faceYaw:number,//faceNumber ==1 欧拉角 yaw facePitch:number,//faceNumber ==1 欧拉角 pitch } * */ detect: (caller: number, imgArrayBuffer: ArrayBuffer, imgwidth: number, imgheight: number, returnFaceImage: number) => Object; /** * 释放人脸检测实例 * @param { caller } 人脸检测实例地址 * @returns { null } */ releaseDetect: (caller: number) => null; ``` ## 测试功能代码 ``` import 'hfacedetect/src/main/ets/components/HYPreviewPage'; // 引入共享包中的命名路由页面 import { PermissionAuthType, requestPermissionsFromUser , PermissionRequestType} from 'hfacedetect' requestPermissionsFromUser(getContext() as common.UIAbilityContext, PermissionRequestType.RequestForCamera) .then((callBack) => { if (callBack.authTypre === PermissionAuthType.AuthTypeAuthorized) { try { this.getUIContext().getRouter().pushNamedRoute({ name: 'HYPreviewPage', params: {} }) } catch (err) { let message = (err as BusinessError).message let code = (err as BusinessError).code console.error(`pushNamedRoute failed, code is ${code}, message is ${message}`); } }else { } }).catch( ()=> { }) ```