人脸识别
唤醒及预唤醒检测
组件名称: WakeupAndPreWakeupStartCheckComponent
组件描述: 人脸识别组件,可支持普通人脸识别(预唤醒)及精确人脸识别(满足唤醒条件),普通人脸识别只能识别出人脸,但无法进行后续的追踪,精确人脸识别可根据人脸特征生成一个id,后续可根据id进行持续追踪(可参考人脸追踪组件),如果被识别人注册过详细信息(注册方式可参考人脸注册组件),该组件可以返回包含姓名等在内的详细信息。
备注:需要使用底盘的功能组件,都是互斥的。比如底盘行走、导航、回冲、焦点跟随等。请不要同时使用他们,会造成错误
使用示例:
public onStatusUpdate = (event?: ComponentEvent): boolean => { //TODO: 状态处理 return true; }; public onFinish = (result?: ComponentEvent): boolean => { //TODO: 结果处理 return true; }; public render() { let wakeupParam = new WakeupAndPreWakeupStartCheckParam(true, 3, 1.3, 45, true, undefined, true, 5 * 1000, undefined); return ( <> <WakeupAndPreWakeupStartCheckComponent param={wakeupParam} onStatusUpdate={this.onStatusUpdate} onFinish={this.onFinish} /> </> ); }
属性:
- param:组件参数,类型为WakeupAndPreWakeupStartCheckParam
- onStatusUpdate:组件状态回调
- onFinish:组件执行结束回调
参数说明:
- isNeedPreWakeup:是否需要预唤醒,如果设置为false,不会有预唤醒状态回调,默认为true
- maxDistance:人脸识别的最大距离,超过该距离的人脸数据自动忽略,默认3米
- wakeupFaceDistance:唤醒的最大距离,人距离超过该距离不会触发唤醒回调,默认1.3米
- wakeupFaceAngleX:唤醒的最大角度,人脸角度大于该值,不会触发唤醒回调,默认45度
- isNeedInCompleteFace:是否包含不完成人脸检测,默认true
- incompleteFaceCacheTimeout:不完成人脸检测缓存时间,默认3000毫秒
- isPreWakeupNeedBody:检测到人体时是否触发预唤醒回调,默认true
- preWakeupIntervalTime:两次预唤醒之间的间隔时间,低于该值不会再次触发预唤醒,默认20000毫秒
- recognizeTimeout:人脸识别超时时间,默认2000毫秒
- isWakeupNeedRecognize:唤醒是否获取注册的详细信息(该参数仅在豹大屏有效)
状态说明:
通过ComponentEvent.status获取到状态码:
- 32710001:已满足预唤醒条件,满足预唤醒后组件不会停止,会继续进行更详细的识别,常量定义 ComponentStatusConst.STATUS_PRE_WAKEUP
结果说明:
通过ComponentEvent.status获取到结果码:
- 32610001:满足唤醒条件,ComponentEvent.data为人脸数据,常量定义 ComponentResultConst.RESULT_SUCCESS
- -32600004:获取人脸数据失败,常量定义 ComponentErrorConst.ERROR_OPEN_PERSON_DETECT_FAILED
注意:开发中请使用常量定义进行结果及状态判断,以上出现的返回码在后续版本中有可能会发生变更
人脸数据:
通过ComponentEvent.data可获取到返回的人脸数据,该值为json字符串:
- id:人脸标识,进行人脸追踪时需要id作为参数,需要注意的是同一个人多次识别可能获取的id不同,不能作为同一个人的唯一标识。
- name:注册名称,被识别人未进行过注册,该值为空
- angle:人脸角度
- distance:距离
- facewidth:人脸宽度
- faceheight:人脸高度
- faceX:人脸x坐标
- faceY:人脸y坐标
最低版本: 1.0.0
适用平台:
豹小秘 | mini | 招财豹 | 豹小递max | 豹小秘DP |
---|---|---|---|---|
是 | 是 | 是 | 是 | 是 |
根据条件找人
组件名称: PersonAppearComponent
组件描述: 用于判断是否有满足条件的人出现,当有满足条件的人出现后,该组件会自动回调结果并结束运行(结束运行表示,该组件在回调结果后,就不会继续根据条件找人。如果需要在回调后依旧保持使用,可通过动态插入该组件)。
使用示例:
public onFinish = (result?: ComponentEvent): boolean => { //TODO: 结果处理 return true; };public personAppearOnUpdate = (event: any): boolean => { //如果检测到人脸,可从event.data中获取到切好图的人脸照片} public render() { let personAppearParam = new PersonAppearParam(); return ( <> <PersonAppearComponent param={personAppearParam} onFinish={this.onFinish} onStatusUpdate={this.personAppearOnUpdate} /> </> ); }
属性:
- param:组件参数,类型为PersonAppearParam
- onFinish:组件执行结束回调
- onStatusUpdate:组件状态发生变化时的回调
参数说明:
- personId:根据id查找,用于检测特定id的人脸,默认-1
- personName:用于检测特定名字的人脸,默认为空
- maxDistance:检测的最大距离,默认3米,超过该距离的人脸数据自动忽略
- maxFaceAngleX:检测的最大人脸角度,默认60度
- isNeedInCompleteFace:是否包含不完成人脸检测,默认false
- incompleteFaceCacheTimeout:不完成人脸检测缓存时间,默认3000毫秒
- isNeedBody:是否检测人体,默认false
- isNeedRecognize:是否需要识别详细信息,默认true
- recognizeTimeout:人脸识别超时时间,默认2000毫秒
- appearTimeout:检测超时时间,默认7000毫秒
结果说明:
通过ComponentEvent.status获取到结果码:
- 32610001:检测成功,ComponentEvent.data为人脸数据,常量定义 ComponentResultConst.RESULT_SUCCESS
- 32610003:超时未检测到符合条件的人,常量定义ComponentResultConst.RESULT_TIMEOUT
- -32600004:获取人脸数据失败,常量定义 ComponentErrorConst.ERROR_OPEN_PERSON_DETECT_FAILED
注意:开发中请使用常量定义进行结果及状态判断,以上出现的返回码在后续版本中有可能会发生变更
人脸数据:
通过ComponentEvent.data可获取到返回的人脸数据,该值为json字符串:
- id:人脸标识,进行人脸追踪时需要id作为参数,需要注意的是同一个人多次识别可能获取的id不同,不能作为同一个人的唯一标识。
- name:注册名称,被识别人未进行过注册,该值为空
- angle:人脸角度
- distance:距离
- facewidth:人脸宽度
- faceheight:人脸高度
- faceX:人脸x坐标
- faceY:人脸y坐标
最低版本: 1.0.0
适用平台:
豹小秘 | mini | 招财豹 | 豹小递max | 豹小秘DP |
---|---|---|---|---|
是 | 是 | 是 | 是 | 是 |
检测人是否丢失
组件名称: PersonDisappearComponent
组件描述: 用于检测符合条件的人是否丢失,当符合条件的人持续一段时间不出现时会触发结果回调。
使用示例:
public onFinish = (result?: ComponentEvent): boolean => { //TODO: 结果处理 return true; }; public render() { let personDisappearParam = new PersonDisappearParam(); return ( <> <PersonDisappearComponent param={personDisappearParam} onFinish={this.onFinish} /> </> ); }
属性:
- param:组件参数,类型为PersonDisappearParam
- onFinish:组件执行结束回调
参数说明:
- personId:需要检查的人脸id,默认-1
- personName:需要检测的人的名称,默认空
- maxDistance:检测的最大距离,默认3米,超过该距离的人脸数据自动忽略
- maxFaceAngleX:检测的最大人脸角度,默认60度
- isNeedInCompleteFace:是否包含不完成人脸检测,默认false
- isNeedBody:是否检测人体,默认false
- disappearTimeout:人丢失后组件会持续进行人脸识别,直到超过该时间没有找到符合条件的数据,会主动退出
- lostTimeout:持续多久无满足条件的人脸数据则认为人丢失,会上报人丢失状态,但组件不会退出,必须比disappearTimeout小
状态说明:
通过ComponentEvent.status获取到状态码:
- 32710014:人已丢失,常量定义 ComponentStatusConst.STATUS_PERSON_LOST_TIMEOUT
结果说明:
通过ComponentEvent.status获取到结果码:
- 32610003:超时未检测到符合条件的人,常量定义ComponentResultConst.RESULT_TIMEOUT
- -32600004:获取人脸数据失败,常量定义 ComponentErrorConst.ERROR_OPEN_PERSON_DETECT_FAILED
注意:开发中请使用常量定义进行结果及状态判断,以上出现的返回码在后续版本中有可能会发生变更
最低版本: 1.0.0
适用平台:
豹小秘 | mini | 招财豹 | 豹小递max | 豹小秘DP |
---|---|---|---|---|
是 | 是 | 是 | 是 | 是 |
人脸注册(默认不可用,需申请签协议)
组件名称: RegisterComponent
组件描述: 注册个人信息,注册的信息可在人脸识别时获取。如果已经注册,再次调用,可修改注册信息。
使用示例:
public onFinish = (result?: ComponentEvent): boolean => { //TODO: 结果处理 return true; }; public render() { let registerParam = new RegisterParam(name); return ( <> <RegisterComponent param={registerParam} onFinish={this.onFinish} /> </> ); }
属性:
- param:组件参数,类型为RegisterParam
- onFinish:组件执行结束回调
参数说明:
- personName:注册人姓名,必填项
- photoPath:图片路径,路径为空会自动识别获取人脸照片
- personAppearTimeout:人脸检测超时时间,持续未检测到人脸,失败退出,默认2000毫秒
- recognizeTimeOut:识别超时时间,持续未能获取人脸照片,失败退出,默认800毫秒
结果说明:
通过ComponentEvent.status获取到结果码:
- 32610010:注册成功,常量定义 ComponentResultConst.RESULT_REGISTER_SUCCESS
- 32610011:修改名成功,常量定义 ComponentResultConst.RESULT_MODIFY_NAME_SUCCESS
- 32610003:注册失败,常量定义 ComponentResultConst.RESULT_TIMEOUT
- -32640013:图片无效,常量定义 ComponentErrorConst.ERROR_REGISTER_PICTURE_INVALID
- -32640011:修改名称识别,常量定义 ComponentErrorConst.ERROR_MODIFY_NAME_FAILED
注意:开发中请使用常量定义进行结果及状态判断,以上出现的返回码在后续版本中有可能会发生变更
最低版本: 1.0.0
适用平台:
豹小秘 | mini | 招财豹 | 豹小递max | 豹小秘DP |
---|---|---|---|---|
是 | 是 | 是 | 是 | 是 |
查询注册信息
组件名称: RecognizeComponent
组件描述: 根据人脸id查询注册信息,唤醒组件、人脸查找组件内部已包含对该组件的调用。
使用示例:
public onFinish = (result?: ComponentEvent): boolean => { //TODO: 结果处理 return true; }; public render() { let recognizeParam = new RecognizeParam(personId); return ( <> <RecognizeComponent param={registerParam} onFinish={this.onFinish} /> </> ); }
属性:
- param:组件参数,类型为RecognizeParam
- onFinish:组件执行结束回调
参数说明:
- personId:人脸id,必填项
- recognizeTimeout:人脸识别超时时间,默认2000毫秒
结果说明:
通过ComponentEvent.status获取到结果码:
- 32610001:识别成功,常量定义 ComponentResultConst.RESULT_SUCCESS
- -32630003:获取图片失败,常量定义 ComponentResultConst.ERROR_GET_PICTURE_FAILED
- -32610007:人脸id无效,常量定义 ComponentResultConst.ERROR_PARAMS_PERSON_ID_INVALID
- -32640002:图片不合格,无法识别,常量定义 ComponentErrorConst.ERROR_REMOTE_DETECT_FAILED
- -32600003:识别超时,无法识别,常量定义 ComponentErrorConst.ERROR_RECOGNIZE_TIMEOUT
注意:开发中请使用常量定义进行结果及状态判断,以上出现的返回码在后续版本中有可能会发生变更
最低版本: 1.0.0
适用平台:
豹小秘 | mini | 招财豹 | 豹小递max | 豹小秘DP |
---|---|---|---|---|
是 | 是 | 是 | 是 | 是 |
人脸注册预览组件
组件名称: ReceptionRegisterCameraView
组件描述: 人脸检测预览图组件,用于展示当前机器人摄像头拍照的内容。可以和PersonAppearComponent组件一起使用。
使用示例:
public onPreviewStatusUpdate = (state: any): void => { //TODO: 结果处理 console.log(TAG, 'ReceptionRegisterCameraView', state); if (state !== 'RESULT_SUCCESS') { } }; public onCamareViewCapture = (state: string, originalImageFile: string, compressedFile: string): void => { console.log(TAG, 'onCamareViewCapture', state, originalImageFile, compressedFile)} public render() { return ( <> <ReceptionRegisterCameraView onPreviewState={this.onPreviewStatusUpdate} onCaptureState={this.onCamareViewCapture}/> </> ); }
属性:
- onPreviewState:预览组件发生错误的时候会回调这个函数通知。
- onCaptureState:预览拍照时触发,可在回调中拿到图片信息。
主要方法:
- takePicture:拍照
豹小秘 | mini | 招财豹 | 豹小递max | 豹小秘DP |
---|---|---|---|---|
是 | 是 | 是 | 是 | 是 |