人脸检测
更新时间: 2026/07/22 17:33:50
人脸检测即对本地视频流中的人脸进行实时识别与追踪,可以获取视频帧中人脸的数量以及每张人脸在画面中的位置信息。该功能通常与美颜、滤镜等效果配合使用,用于实现人脸贴纸、美颜增强、实时人脸追踪等场景。
NERTC SDK 支持人脸检测功能,检测结果通过回调实时返回。
功能介绍
人脸检测功能可以应用于以下场景:
-
在线直播场景中,主播开启美颜或人脸贴纸时,需要实时获取人脸位置以实现精准的美颜或贴纸跟随效果。
-
互动视频场景中,需要根据人脸位置进行画面裁剪、人像居中或背景虚化等处理。
-
视频通话场景中,需要检测对方或本地是否有人脸出现,用于判断用户是否在摄像头前。
注意事项
- 调用人脸检测接口前,必须先开启美颜功能。请通过
startBeauty与enableBeauty(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 {
// 未检测到人脸
}
}
此文档是否对你有帮助?




