Android

人脸检测

更新时间: 2026/07/22 17:33:50

人脸检测即对本地视频流中的人脸进行实时识别与追踪,可以获取视频帧中人脸的数量以及每张人脸在画面中的位置信息。该功能通常与美颜、滤镜等效果配合使用,用于实现人脸贴纸、美颜增强、实时人脸追踪等场景。

NERTC SDK 支持人脸检测功能,检测结果通过回调实时返回。

功能介绍

人脸检测功能可以应用于以下场景:

  • 在线直播场景中,主播开启美颜或人脸贴纸时,需要实时获取人脸位置以实现精准的美颜或贴纸跟随效果。

  • 互动视频场景中,需要根据人脸位置进行画面裁剪、人像居中或背景虚化等处理。

  • 视频通话场景中,需要检测对方或本地是否有人脸出现,用于判断用户是否在摄像头前。

注意事项

  • 调用人脸检测接口前,必须先开启美颜功能。请通过 startBeautyenableBeauty(true) 接口开启美颜后再调用本接口。
  • 人脸检测功能需要在引擎初始化之后调用,加入房间前后均可调用。
  • 当未检测到人脸信息时,回调中的 infos 为空数组,且回调频率会降低以降低性能开销。
  • 检测结果中的人脸位置信息以视频图像的原始分辨率为坐标系,需要结合图像宽高进行坐标换算。

实现方法

  • 调用 enableVideoFaceDetect 方法可以开启或关闭人脸检测功能。

    人脸检测功能依赖美颜模块,调用本接口前请确保已通过 startBeauty()enableBeauty(true) 开启美颜。若美颜未开启,本接口调用无效。

  • 开启人脸检测后,检测结果通过 onLocalVideoFaceDetectInfoChanged 回调返回,回调信息包括人脸数量、每张人脸的位置信息(如矩形框坐标)、以及当前视频图像的宽高。

示例代码

java// 1. 先开启美颜
NERtcEx.getInstance().startBeauty();
NERtcEx.getInstance().enableBeauty(true);

// 2. 开启人脸检测
int ret = NERtcEx.getInstance().enableVideoFaceDetect(true);
if (ret == 0) {
    // 调用成功,等待回调返回检测结果
} else {
    // 调用失败,处理错误
}

// 3. 在回调中获取人脸检测结果
@Override
public void onLocalVideoFaceDetectInfoChanged(NERtcVideoStreamType videoStreamType,
                                               NERtcVideoFaceDetectPositionInfo[] infos,
                                               int imageWidth,
                                               int imageHeight) {
    if (infos != null && infos.length > 0) {
        // 检测到人脸,遍历人脸信息
        for (NERtcVideoFaceDetectPositionInfo info : infos) {
            // 处理每张人脸的位置信息
        }
    } else {
        // 未检测到人脸
    }
}
此文档是否对你有帮助?
有帮助
去反馈
  • 功能介绍
  • 注意事项
  • 实现方法
  • 示例代码