人脸检测
EnableFaceDetection
开启/关闭本地人脸检测。
C++
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
int EnableFaceDetection(bool enabled);
注意
该方法仅适用于 Android 和 iOS。
调用时机
该方法需要在相机启动(如通过调用 StartPreview 或 EnableVideo 实现)后调用。
调用限制
无。
相关回调
成功调用该方法后,SDK 会触发 OnFacePositionChanged 回调向你报告人脸检测的信息:
- 摄像头采集的画面大小
- 人脸在 view 中的位置
- 人脸距设备屏幕的距离
参数
- enabled
- 是否开启人脸检测:
true
:开启人脸检测。false
:(默认)关闭人脸检测。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
OnFacePositionChanged
报告本地人脸检测结果。
C++
UFUNCTION(BlueprintNativeEvent, Category = "Agora|Event")
void OnFacePositionChanged(int imageWidth, int imageHeight, const TArray<FRectangle>& vecRectangle, const TArray<int>& vecDistance, int numFaces);
详情
其中,人脸距设备屏幕的距离由 SDK 通过摄像头采集的画面大小和人脸在 view 中的位置拟合计算得出。
注意
- 该回调仅适用于 Android 和 iOS 平台。
- 当检测到摄像头前的人脸消失时,该回调会立刻触发;在无人脸的状态下,该回调触发频率会降低,以节省设备耗能。
- 当人脸距离设备屏幕过近时,SDK 不会触发该回调。
- Android 平台上,人脸距设备屏幕的距离(distance)值有一定误差,请不要用它进行精确计算。
参数
- imageWidth
- 摄像头采集画面的宽度 (px)。
- imageHeight
- 摄像头采集画面的高度 (px)。
- vecRectangle
- 是一个长度为 numFaces 的数组,表示检测到的人脸信息:
x
:人脸在 view 中的 x 坐标 (px)。以摄像头采集 view 的左上角为原点,x 坐标为人脸左上角相对于原点的横向位移。y
:人脸在 view 中的 y 坐标 (px)。以摄像头采集 view 的左上角为原点,y 坐标为人脸左上角相对原点的纵向位移。width
:人脸在 view 中的宽度 (px)。height
:人脸在 view 中的高度 (px)。
- vecDistance
- 是一个长度为 numFaces 的数组,表示人脸和设备屏幕之间的距离 (cm)。
- numFaces
- 检测的人脸数量。如果为 0,则表示没有检测到人脸。