人脸点位

最近更新时间:2023-06-13 17:38:52

我的收藏
人脸检测(识别人脸出框、多人脸、面部遮挡),256个面部关键点位识别与输出。

人脸256点对应索引图





iOS 接口说明

iOS 集成指引

iOS 集成 SDK 指引,请参见 独立集成腾讯特效

Xmagic 接口回调注册

/// @brief SDK事件监听接口
/// @param listener 事件监听器回调,主要分为AI事件,Tips提示事件,Asset事件
- (void)registerSDKEventListener:(id<YTSDKEventListener> _Nullable)listener;

YTSDKEventListener 回调说明

#pragma mark - 事件回调接口
/// @brief SDK内部事件回调接口
@protocol YTSDKEventListener <NSObject>
/// @brief YTDataUpdate事件回调
/// @param event NSString*格式的回调
- (void)onYTDataEvent:(id _Nonnull)event;
/// @brief AI事件回调
/// @param event dict格式的回调
- (void)onAIEvent:(id _Nonnull)event;
/// @brief 提示事件回调
/// @param event dict格式的回调
- (void)onTipsEvent:(id _Nonnull)event;
/// @brief 资源包事件回调
/// @param event string格式的回调
- (void)onAssetEvent:(id _Nonnull)event;
@end
2.6.0及之前版本 设置回调成功后,每一帧人脸事件会回调:
- (void)onYTDataEvent:(id _Nonnull)event;
3.0.0版本 设置回调成功后,每一帧人脸事件会回调:
- (void)onAIEvent:(id _Nonnull)event;
//在onAIEvent方法中可通过下边方法可以获取到数据
NSDictionary *eventDict = (NSDictionary *)event;
if (eventDict[@"ai_info"] != nil) {
NSLog(@"ai_info %@",eventDict[@"ai_info"]);
}
回调 data 是一个 JSON 格式数据,具体含义如下(256点对应上图的位置):
/// @note 字段含义列表
/**
| 字段 | 类型 | 值域 | 说明 |
| :---- | :---- |:---- | :---- |
| trace_id | int | [1,INF) | 人脸id,连续取流过程中,id相同的可以认为是同一张人脸 |
| face_256_point | float | [0,screenWidth或screenHeight] |512个数,人脸256个关键点,屏幕左上角为(0,0) |
| face_256_visible | float | [0,1] | 人脸256关键点可见度 |
| out_of_screen | bool | true/false | 人脸是否出框 |
| left_eye_high_vis_ratio | float | [0,1] | 左眼高可见度点位占比 |
| right_eye_high_vis_ratio | float | [0,1] | 右眼高可见度点位占比 |
| left_eyebrow_high_vis_ratio | float | [0,1] | 左眉高可见度点位占比 |
| right_eyebrow_high_vis_ratio | float | [0,1] | 右眉高可见度点位占比 |
| mouth_high_vis_ratio | float | [0,1] | 嘴高可见度点位占比 |
**/
- (void)onYTDataEvent:(id _Nonnull)event;

Android 接口说明

Android 集成指引

Android 集成 SDK 指引,具体请参见 独立集成腾讯特效

Xmagic 接口回调注册

设置人脸点位信息等数据回调。
2.6.0及之前版本使用如下方法
void setYTDataListener(XmagicApi.XmagicYTDataListener ytDataListener)
设置人脸信息等数据回调

public interface XmagicYTDataListener {
void onYTDataUpdate(String data)
}
3.0.0版本使用如下方法
void setAIDataListener(XmagicApi.OnAIDataListener aiDataListener)

public interface OnAIDataListener {
void onFaceDataUpdated(List<TEFaceData> faceDataList);
void onHandDataUpdated(List<TEHandData> handDataList);
void onBodyDataUpdated(List<TEBodyData> bodyDataList);
void onAIDataUpdated(String data); //此方法是3.0.0版本新增方法,数据结构和之前XmagicYTDataListener接口的数据保持一致
}
onYTDataUpdate 和 onAIDataUpdated 返回 JSON string 结构,最多返回5个人脸信息:
{
"face_info":[{
"trace_id":5,
"face_256_point":[
180.0,
112.2,
...
],
"face_256_visible":[
0.85,
...
],
"out_of_screen":true,
"left_eye_high_vis_ratio":1.0,
"right_eye_high_vis_ratio":1.0,
"left_eyebrow_high_vis_ratio":1.0,
"right_eyebrow_high_vis_ratio":1.0,
"mouth_high_vis_ratio":1.0
},
...
]
}

字段含义

字段
类型
值域
说明
trace_id
int
[1,INF)
人脸 ID,连续取流过程中,ID 相同的可以认为是同一张人脸。
face_256_point
float
[0,screenWidth] 或 [0,screenHeight]
共512个数,人脸256个关键点,屏幕左上角为(0,0)。
face_256_visible
float
[0,1]
人脸256关键点可见度。
out_of_screen
bool
true/false
人脸是否出框。
left_eye_high_vis_ratio
float
[0,1]
左眼高可见度点位占比。
right_eye_high_vis_ratio
float
[0,1]
右眼高可见度点位占比。
left_eyebrow_high_vis_ratio
float
[0,1]
左眉高可见度点位占比。
right_eyebrow_high_vis_ratio
float
[0,1]
右眉高可见度点位占比。
mouth_high_vis_ratio
float
[0,1]
嘴高可见度点位占比。

参数

参数
含义
XmagicApi.XmagicYTDataListener ytDataListener
回调函数实现类。