创建应用

创建iOS人脸识别应用

1. 登录 习悦开发者平台,进入 控制台 页面,点击“创建应用”按钮,如图:

2. 填写应用相关信息,勾选iOS应用平台,提交应用,如图:

3. 在我的应用模块可以查看已创建的应用及应用信息,如图:

iOS 开发

功能流程图


实体解释 userId:在习悦人脸识别服务中,userId可理解为应用中的用户,对应开发者的应用中账户体系,userId的唯一性由开发者进行维护;userId保证了用户(非开发者)数据的独立和安全。
FaceSet:人脸集合,是人脸样本管理单位,是人脸数据(Face)的集合,由开发者进行创建,在一个userId中FaceSet名称是不可重复的;人脸检索就是对FaceSet进行检索,检索集合里最相似的Face数据。
Face:人脸数据,是人脸识别服务中的最基本单位,基于人脸图片生成,服务将图片中的人脸进行识别,返回相应的Face数据作为人脸凭证,后续可添加到FaceSet,做人脸特征分析(年龄、性别),人脸对比和人脸检索。
集合样本:是FaceSet的基本单元,单位是Face,Face作为集合样本后,对集合进行检索时,将成为被检索的数据。

示例Demo

开始开发

1. 下载 人脸识别iOS SDK
2. 在finder中,将ZHTJFaceSDK目录拖入工程目录下;
3. ZHTJBaseServiceAPI类中设置服务环境,isDebug为0是生产环境,为1是测试环境,默认为0;

4. 在您的应用程序入口处启动核心服务,代码如下:

#import "ZHTJBaseServiceAPI.h"
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [[ZHTJBaseService shared] setApiKey:@"Your APIKey" apiSecret:@"Your APISecret"];
    ...
}

5. 核心服务启动成功后,需要绑定一位用户(需要开发者自己管理,长度为1-32位字母/数字),代码如下:

#import "ZHTJFaceServiceAPI.h"
[ZHTJFaceUserManager tj_creatUserWithUserID:@"Your UserID"
    completionHandler:^(NSString *userID, ZHTJFaceError * error) {
    if (error.code) {
        NSLog(@"绑定用户失败");
    }else{
        NSLog(@"绑定用户成功,用户ID:%@",userID);
    }
}];

6. 用户绑定成功后即可进行更多操作,以下是人脸区域检测示例代码:

[ZHTJDetectManager tj_DetectImage:img age:YES gender:YES
    completionHandler:^(NSArray<ZHTJFaceFeaturesModel *> *faceFeatureMDAry, ZHTJFaceError *error) {
    if (error.code) {
        NSLog(@"检测失败”);
    }else{
        NSLog(@”检测成功”);
    }
}];

7. 人脸检测成功得到ZHTJFaceFeaturesMode数据模型数组,详解请看人脸识别iOS Demo,根据返回结果绘制脸框如下图:

注意

由于iOS10加强的对权限的授权认证管理,iOS10及iOS10以上版本需要在TARGETS -> Capabilities 中打开KeychainSharing 选项,如图:

API功能概览

API功能

接口分类 接口名称 功能说明
ZHTJFaceUserManager.h tj_creatUserWithUserID: 绑定新用户
ZHTJDetectManager.h tj_DetectImage:isAge:isGender: 人脸区域检测
ZHTJFaceSetManager.h tj_FaceSetCreatWithFaceSetName:
faceSetTag:faceSetParam:
创建人脸集合
tj_FaceSetReadFaceSetDetailWithFaceSetID: 查看人脸集合详情 (FaceSetID)
tj_FaceSetReadFaceSetDetailWithFaceSetName: 查看人脸集合详情 (FaceSetName)
tj_FaceSetQueryFaceSetsWithFaceSetTag:start: 查询用户的人脸集合
tj_FaceSetUpdateWithFaceSetID:
faceSetTag:faceSetParam:
修改人脸集合标签 (FaceSetID)
tj_FaceSetUpdateWithFaceSetName:
faceSetTag:faceSetParam:
修改人脸集合标签 (FaceSetName)
tj_FaceSetDeleteWithFaceSetID:checkEmpty: 删除人脸集合 (FaceSetID)
tj_FaceSetDeleteWithFaceSetName:checkEmpty: 删除人脸集合 (FaceSetName)
ZHTJFaceManager.h tj_FaceSetAddFaceIDs:faceSetID: 添加人脸 (FaceSetID , FaceIDs)
tj_FaceSetAddFaceIDs:faceSetName: 添加人脸 (FaceSetName , FaceIDs)
tj_FaceSetAddFaceIDWithImg:
faceParam:faceSetID:
添加人脸 (FaceSetID , Img)
tj_FaceSetAddFaceIDWithImg:
faceParam:faceSetName:
添加人脸 (FaceSetName , Img)
tj_FaceQueryFacesWithFaceUserParam:faceSetID: 查询人脸列表 (FaceSetID)
tj_FaceQueryFacesWithFaceUserParam:faceSetName: 查询人脸列表 (FaceSetName)
tj_FaceReadFaceDetailWithFaceIDs:getFaceUrl: 查看人脸详情
tj_FaceMarkWithFaceID:faceUserParam:faceTag: 修改人脸标示
tj_FaceAnalyzeWithFaceIDs: 分析人脸特征
tj_FaceSetRemoveFaceIDs:faceSetID: 删除人脸 (FaceSetID)
tj_FaceSetRemoveFaceIDs:faceSetName: 删除人脸 (FaceSetName)
ZHTJSearchManager.h tj_RefreshWithFaceSetID: 刷新集合数据
tj_SearchFaceWithFaceSetID:faceID:topCount: 人脸检索 (FaceSetID , FaceID)
tj_SearchFaceWithFaceSetName:faceID:topCount: 人脸检索 (FaceSetName , FaceID)
tj_SearchFaceWithFaceSetID:img:topCount: 人脸检索 (FaceSetID , Img)
tj_SearchFaceWithFaceSetName:img:topCount: 人脸检索 (FaceSetName , Img)
ZHTJCompareManager.h tj_CompareImageAry: 人脸对比 (Img : Img)
tj_CompareFaceID:image: 人脸对比 (FaceID : Img)
tj_CompareWithFaceIDAry: 人脸对比 (FaceID : FaceID)

绑定新用户

接口名称

tj_creatUserWithUserID:

描述

使用人脸识别SDK,在绑定API key和API Secret后,需要您绑定一个用户后才能进行接下来的操作;该用户绑定后可重复绑定,目前没有解绑功能;

参数

参数名 参数类型 参数说明
必须 userID NSString 用户自己创建(1-32位字母/数字)

返回值说明

字段 类型 说明
userID NSString 用户创建成功返回的用户ID
error ZHTJFaceError 错误信息详情,code为0时表示成功
code NSInteger 状态码
msg NSString 状态说明
msgID NSString 当次请求ID

调用示例

[ZHTJFaceUserManager tj_creatUserWithUserID:userID
    completionHandler:^(NSString *userID, ZHTJFaceError * error){
    …
}];

人脸区域检测

接口名称

tj_DetectImage:isAge:isGender:

描述

用户绑定成功后,检测图片中人脸的位置及人脸特征;

参数

参数名 参数类型 参数说明
必须 img UIImage 分辨率小于1920*1920带有人脸的图片;
可选 isAge BOOL YES,检测年龄特征;
默认为NO;
isGender BOOL YES,检测性别特征;
默认为NO;

返回值说明

字段 类型 说明
faceFeatureMDAry NSArray <ZHTJFaceFeaturesModel*> Face特征数据模型数组
faceID NSString Face 的ID
注:faceId如果连续72小时没有存放在任意FaceSet中,则该faceId将会失效。
faceUserParam NSString Face的标记信息
faceTag NSString Face的标记信息
faceRect CGRect Face在所属图片的位置
faceAge CGFloat Face的年龄
faceGender NSArray Face的性别概率数组数组,@[女,男];
pointStrAry NSArray 人脸特征点数组
注:特征点坐标有可能出现负值,请开发者注意处理。
error ZHTJFaceError 错误信息详情,code为0时表示成功
code NSInteger 状态码
msg NSString 状态说明
msgID NSString 当次请求ID

调用示例

[ZHTJFaceUserManager tj_creatUserWithUserID:userID
    completionHandler:^(NSString *userID, ZHTJFaceError * error) {
    …
}];

创建人脸集合

接口名称

tj_FaceSetCreatWithFaceSetName:faceSetTag:faceSetParam:

描述

绑定用户成功后,给该用户添加FaceSet,用于接下来的操作;同一用户下FaceSetName不能重复,且需满足参数说明中的对应格式;创建FaceSet的同时可以为其设置标签;

参数

参数名 参数类型 参数说明
必须 faceSetName NSString faceSetName名称(1-16位字母/数字/下划线/汉字,首位不能为下划线)
可选 faceSetTag NSString 自定义标记
faceSetParam NSString 自定义标记

返回值说明

字段 类型 说明
faceSetMD ZHTJFaceSetModel FaceSet的基础数据模型
faceSetName NSString FaceSet 的名称
faceSetID NSString FaceSet 的ID
faceSetTag NSString FaceSet 的标记
faceSetUserParam NSString FaceSet 的标记
error ZHTJFaceError 错误信息详情,code为0时表示成功
code NSInteger 状态码
msg NSString 状态说明
msgID NSString 当次请求ID

调用示例

[ZHTJFaceSetManager tj_ FaceSetCreatWithFaceSetName:faceSetName faceSetTag: faceSetTag
    faceSetParam: faceSetParam completionHandler:^(ZHTJFaceSetModel *faceSetMD, ZHTJFaceError *error){
	…
}];

查看人脸集合详情(FaceSetID)

接口名称

tj_FaceSetReadFaceSetDetailWithFaceSetID:

描述

绑定用户后,根据faceSet的ID查看对应faceSet详情;

参数

参数名 参数类型 参数说明
必须 faceSetID NSString faceSet的ID

返回值说明

字段 类型 说明
faceSetDetailMD ZHTJFaceSetDetailModel FaceSet的详细数据模型
faceSetName NSString FaceSet 的名称
faceSetID NSString FaceSet 的ID
faceSetTag NSString FaceSet 的标记
faceSetUserParam NSString FaceSet 的标记
face_Count NSString FaceSet 中Face的数量
faceIDAry NSArray< NSString *> FaceSet 中FaceID的数组
error ZHTJFaceError 错误信息详情,code为0时表示成功
code NSInteger 状态码
msg NSString 状态说明
msgID NSString 当次请求ID

调用示例

[ZHTJFaceSetManager tj_FaceSetReadFaceSetDetailWithFaceSetID:faceSetID
    completionHandler:^(ZHTJFaceSetDetailModel *faceSetDetailMD, ZHTJFaceError *error) {
    …
}];

查看人脸集合详情(FaceSetName)

接口名称

tj_FaceSetReadFaceSetDetailWithFaceSetName:

描述

绑定用户后,根据faceSet的名称查看对应faceSet详情;

参数

参数名 参数类型 参数说明
必须 faceSetName NSString faceSet的名称

返回值说明

字段 类型 说明
faceSetDetailMD ZHTJFaceSetDetailModel FaceSet的详细数据模型
faceSetName NSString FaceSet 的名称
faceSetID NSString FaceSet 的ID
faceSetTag NSString FaceSet 的标记
faceSetUserParam NSString FaceSet 的标记
face_Count NSString FaceSet 中Face的数量
faceIDAry NSArray< NSString *> FaceSet 中FaceID的数组
error ZHTJFaceError 错误信息详情,code为0时表示成功
code NSInteger 状态码
msg NSString 状态说明
msgID NSString 当次请求ID

调用示例

[ZHTJFaceSetManager tj_FaceSetReadFaceSetDetailWithFaceSetName:faceSetName
    completionHandler:^(ZHTJFaceSetDetailModel *faceSetDetailMD, ZHTJFaceError *error) {
    …
}];

查询用户的人脸集合

接口名称

tj_FaceSetQueryFaceSetsWithFaceSetTag:start:

描述

绑定用户后,根据faceSet的标签tag查询用户下对应faceSet;可以设置start控制从第几个开始查询;当faceSetTag为空时,查询用户下所有faceSet;

参数

参数名 参数类型 参数说明
可选 faceSetTag NSString 标记信息,默认为@””
start NSUInteger 控制从第几个FaceSet开始返回,默认为0;

返回值说明

字段 类型 说明
faceSetMDAry NSArray<ZHTJFaceSetModel *> FaceSetModel数组
faceSetName NSString FaceSet 的名称
faceSetID NSString FaceSet 的ID
faceSetTag NSString FaceSet 的标记
faceSetUserParam NSString FaceSet 的标记
error ZHTJFaceError 错误信息详情,code为0时表示成功
code NSInteger 状态码
msg NSString 状态说明
msgID NSString 当次请求ID

调用示例

[ZHTJFaceSetManager tj_FaceSetQueryFaceSetsWithFaceSetTag:tag start:0
    completionHandler:^(NSArray<ZHTJFaceSetModel *> *faceSetMDAry, ZHTJFaceError *error) {
    …
}];

修改人脸集合标签(FaceSetID)

接口名称

tj_FaceSetUpdateWithFaceSetID:faceSetTag:faceSetParam:

描述

绑定用户成功后,根据已存在FaceSet 的ID修改标签;

参数

参数名 参数类型 参数说明
必须 faceSetID NSString faceSet 的ID
可选 faceSetTag NSString 标记信息
faceSetParam NSString 标记信息

返回值说明

字段 类型 说明
faceSetMD ZHTJFaceSetModel FaceSet的基础数据模型
faceSetName NSString FaceSet 的名称
faceSetID NSString FaceSet 的ID
faceSetTag NSString FaceSet 的标记
faceSetUserParam NSString FaceSet 的标记
error ZHTJFaceError 错误信息详情,code为0时表示成功
code NSInteger 状态码
msg NSString 状态说明
msgID NSString 当次请求ID

调用示例

[ZHTJFaceSetManager tj_FaceSetUpdateWithFaceSetID:faceSetID faceSetTag: faceSetTag
    faceSetParam: faceSetParam completionHandler:^(ZHTJFaceSetModel *faceSetMD, ZHTJFaceError *error) {
	…
}];

修改人脸集合标签(FaceSetName)

接口名称

tj_FaceSetUpdateWithFaceSetName:faceSetTag:faceSetParam:

描述

绑定用户成功后,根据已存在FaceSet 的名称修改标签;

参数

参数名 参数类型 参数说明
必须 faceSetName NSString faceSet 的名称
可选 faceSetTag NSString 标记信息
faceSetParam NSString 标记信息

返回值说明

字段 类型 说明
faceSetMD ZHTJFaceSetModel FaceSet的基础数据模型
faceSetName NSString FaceSet 的名称
faceSetID NSString FaceSet 的ID
faceSetTag NSString FaceSet 的标记
faceSetUserParam NSString FaceSet 的标记
error ZHTJFaceError 错误信息详情,code为0时表示成功
code NSInteger 状态码
msg NSString 状态说明
msgID NSString 当次请求ID

调用示例

[ZHTJFaceSetManager tj_FaceSetUpdateWithFaceSetName:faceSetName faceSetTag: faceSetTag
    faceSetParam: faceSetParam completionHandler:^(ZHTJFaceSetModel *faceSetMD, ZHTJFaceError *error) {
	…
}];

删除人脸集合(FaceSetID)

接口名称

tj_FaceSetDeleteWithFaceSetID:checkEmpty:

描述

绑定用户成功后,对于已经创建的faceSet,可以根据已存在FaceSet的ID删除该用户下的FaceSet;删除前可以检测该FaceSet下是否已经存在Face,如选择检测且该FaceSet下存在Face,则删除失败,防止一些误删的操作;不检测就会直接删除该FaceSet;

参数

参数名 参数类型 参数说明
必须 faceSetID NSString faceSet 的ID
可选 check BOOL YES,删除前检测是否包含face,检测到存在face则不删除,检测到不存在face则删除;
NO,删除前不检测,直接删除;
默认为NO;

返回值说明

字段 类型 说明
faceSetMD ZHTJFaceSetModel FaceSet的基础数据模型
faceSetName NSString FaceSet 的名称
faceSetID NSString FaceSet 的ID
faceSetTag NSString FaceSet 的标记
faceSetUserParam NSString FaceSet 的标记
error ZHTJFaceError 错误信息详情,code为0时表示成功
code NSInteger 状态码
msg NSString 状态说明
msgID NSString 当次请求ID

调用示例

[ZHTJFaceSetManager tj_FaceSetDeleteWithFaceSetID:faceSetID checkEmpty:YES
    completionHandler:^(ZHTJFaceSetModel *faceSetMD, ZHTJFaceError *error) {
	…
}];

删除人脸集合(FaceSetName)

接口名称

tj_FaceSetDeleteWithFaceSetName:checkEmpty:

描述

绑定用户成功后,对于已经创建的faceSet,可以根据已存在FaceSet的名称删除该用户下的FaceSet;删除前可以检测该FaceSet下是否已经存在Face,如选择检测且该FaceSet下存在Face,则删除失败,防止一些误删的操作;不检测就会直接删除该FaceSet;

参数

参数名 参数类型 参数说明
必须 faceSetName NSString faceSet 的名称
可选 check BOOL YES,删除前检测是否包含face,检测到存在face则不删除,检测到不存在face则删除;
NO,删除前不检测,直接删除;
默认为NO;

返回值说明

字段 类型 说明
faceSetMD ZHTJFaceSetModel FaceSet的基础数据模型
faceSetName NSString FaceSet 的名称
faceSetID NSString FaceSet 的ID
faceSetTag NSString FaceSet 的标记
faceSetUserParam NSString FaceSet 的标记
error ZHTJFaceError 错误信息详情,code为0时表示成功
code NSInteger 状态码
msg NSString 状态说明
msgID NSString 当次请求ID

调用示例

[ZHTJFaceSetManager tj_FaceSetDeleteWithFaceSetName:faceSetName
    checkEmpty:YES completionHandler:^(ZHTJFaceSetModel *faceSetMD, ZHTJFaceError *error) {
	…
}];

添加人脸(FaceSetID,FaceIDs)

接口名称

tj_FaceSetAddFaceIDs:faceSetID:

描述

绑定用户后,根据已存在faceSet的ID和FaceID,将FaceID添加到FaceSet中;FaceID可以通过 人脸区域检测人脸对比(Img:Img) 获得;

注意:调用该接口后,需要调用刷新集合数据接口,在集合检索中才能生效。
建议:批量操作后调用一次刷新集合数据接口即可。

参数

参数名 参数类型 参数说明
必须 faceSetID NSString faceSet的ID
faceIDAry NSArray<NSString *> 有效的FaceID的数组

返回值说明

字段 类型 说明
faceOperationMD ZHTJFaceOperationModel 操作Face的数据模型
face_OperationCount NSInteger 操作的数量
face_Count NSInteger 操作后FaceSet中Face的数量
error ZHTJFaceError 错误信息详情,code为0时表示成功
code NSInteger 状态码
msg NSString 状态说明
msgID NSString 当次请求ID

调用示例

[ZHTJFaceManager tj_FaceSetAddFaceIDs:@[faceID] faceSetID:faceSetID
    completionHandler:^(ZHTJFaceOperationModel * faceOperationMD, ZHTJFaceError *error) {
    …
}];

添加人脸(FaceSetName,FaceIDs)

接口名称

tj_FaceSetAddFaceIDs:faceSetName:

描述

绑定用户后,根据已存在faceSet的名称和FaceID,将FaceID添加到FaceSet中;FaceID可以通过 人脸区域检测人脸对比(Img:Img) 获得;

注意:调用该接口后,需要调用刷新集合数据接口,在集合检索中才能生效。
建议:批量操作后调用一次刷新集合数据接口即可。

参数

参数名 参数类型 参数说明
必须 faceSetName NSString faceSet的名称
faceIDAry NSArray<NSString *> 有效的FaceID的数组

返回值说明

字段 类型 说明
faceOperationMD ZHTJFaceOperationModel 操作Face的数据模型
face_OperationCount NSInteger 操作的数量
face_Count NSInteger 操作后FaceSet中Face的数量
error ZHTJFaceError 错误信息详情,code为0时表示成功
code NSInteger 状态码
msg NSString 状态说明
msgID NSString 当次请求ID

调用示例

[ZHTJFaceManager tj_FaceSetAddFaceIDs:@[faceID] faceSetName:faceSetName
    completionHandler:^(ZHTJFaceOperationModel * faceOperationMD, ZHTJFaceError *error) {
    …
}];

添加人脸(FaceSetID,Img)

接口名称

tj_FaceSetAddFaceIDWithImg:faceParam:faceSetID:

描述

绑定用户后,根据已存在faceSet的ID和有且只有一张人脸的图片,将图片上的Face添加到FaceSet中;使用图片添加人脸时,可以同时设置Face的faceParam标签;

注意:调用该接口后,需要调用刷新集合数据接口,在集合检索中才能生效。
建议:批量操作后调用一次刷新集合数据接口即可。

参数

参数名 参数类型 参数说明
必须 img UIImage 分辨率在1920*1920以内,且有且只有1张人脸在图片上;
faceSetID NSString faceSet的ID
faceParam NSString Face的标记

返回值说明

字段 类型 说明
faceOperationMD ZHTJFaceOperationModel 操作Face的数据模型
face_OperationCount NSInteger 操作的数量
face_Count NSInteger 操作后FaceSet中Face的数量
error ZHTJFaceError 错误信息详情,code为0时表示成功
code NSInteger 状态码
msg NSString 状态说明
msgID NSString 当次请求ID

调用示例

[ZHTJFaceManager tj_FaceSetAddFaceIDWithImg:image faceParam:faceParam
    faceSetID:faceSetID completionHandler:^(ZHTJFaceOperationModel *faceOperationMD, ZHTJFaceError *error) {
    …
}];

添加人脸(FaceSetName,Img)

接口名称

tj_FaceSetAddFaceIDWithImg:faceParam:faceSetName:

描述

绑定用户后,根据已存在faceSet的名称和有且只有一张人脸的图片,将图片上的Face添加到FaceSet中;使用图片添加人脸时,可以同时设置Face的faceParam标签;

注意:调用该接口后,需要调用刷新集合数据接口,在集合检索中才能生效。
建议:批量操作后调用一次刷新集合数据接口即可。

参数

参数名 参数类型 参数说明
必须 img UIImage 分辨率在1920*1920以内,且有且只有1张人脸在图片上;
faceSetName NSString faceSet的名称
faceParam NSString Face 的标记

返回值说明

字段 类型 说明
faceOperationMD ZHTJFaceOperationModel 操作Face的数据模型
face_OperationCount NSInteger 操作的数量
face_Count NSInteger 操作后FaceSet中Face的数量
error ZHTJFaceError 错误信息详情,code为0时表示成功
code NSInteger 状态码
msg NSString 状态说明
msgID NSString 当次请求ID

调用示例

[ZHTJFaceManager tj_FaceSetAddFaceIDWithImg:image faceParam:faceParam
    faceSetName:faceSetName completionHandler:^(ZHTJFaceOperationModel *faceOperationMD, ZHTJFaceError *error) {
    …
}];

查询人脸列表(FaceSetID)

接口名称

tj_FaceQueryFacesWithFaceUserParam:faceSetID:

描述

用户绑定成功后,通过已存在FaceSet的ID和人脸标签faceUserParam查询人脸列表; faceUserParam为空时,查询所有有人脸;

参数

参数名 参数类型 参数说明
必须 faceSetID NSString FaceSet的名称
可选 faceUserParam NSString Face的标记信息,默认为@””,查询所有人脸

返回值说明

字段 类型 说明
faceIDAry NSArray <NSString*> FaceID数组
error ZHTJFaceError 错误信息详情,code为0时表示成功
code NSInteger 状态码
msg NSString 状态说明
msgID NSString 当次请求ID

调用示例

[ZHTJFaceManager tj_FaceQueryFacesWithFaceUserParam:faceUserParam faceSetID:faceSetID
    completionHandler:^(NSArray<NSString *> *faceIDAry, ZHTJFaceError *error) {
    …
}];

查询人脸列表(FaceSetName)

接口名称

tj_FaceQueryFacesWithFaceUserParam:faceSetName:

描述

用户绑定成功后,通过已存在FaceSet的名称和人脸标签faceUserParam查询人脸列表;faceUserParam为空时,查询所有有人脸;

参数

参数名 参数类型 参数说明
必须 faceSetName NSString FaceSet的ID
可选 faceUserParam NSString Face的标记信息,默认为@””,查询所有有人脸

返回值说明

字段 类型 说明
faceIDAry NSArray <NSString*> FaceID数组
error ZHTJFaceError 错误信息详情,code为0时表示成功
code NSInteger 状态码
msg NSString 状态说明
msgID NSString 当次请求ID

调用示例

[ZHTJFaceManager tj_FaceQueryFacesWithFaceUserParam:faceUserParam faceSetName:faceSetName
    completionHandler:^(NSArray<NSString *> *faceIDAry, ZHTJFaceError *error) {
    …
}];

查看人脸详情

接口名称

tj_FaceReadFaceDetailWithFaceIDs:getFaceUrl:

描述

用户绑定成功后,根据FaceID查看人脸详情;

参数

参数名 参数类型 参数说明
必须 faceIDAry NSArray<NSString *> 有效的FaceID的数组
可选 isGet BOOL Yes,获取人脸图片地址;
NO,不获取人脸图片地址;
默认为NO;

返回值说明

字段 类型 说明
faceDetailMDAry NSArray<ZHTJFaceDetailModel*> Face详情的数据模型
faceID NSString Face 的ID
faceUserParam NSString Face的标记信息
faceTag NSString Face的标记信息
faceRect CGRect Face在所属图片的位置
faceAge CGFloat Face的年龄
faceGender NSArray Face的性别概率数组数组,@[女,男];
faceSetAry NSArray<NSString*> Face关联的FaceSet的ID数组
faceImgID NSString Face所属图片的图片ID
faceUrl NSString Face的地址
error ZHTJFaceError 错误信息详情,code为0时表示成功
code NSInteger 状态码
msg NSString 状态说明
msgID NSString 当次请求ID

调用示例

[ZHTJFaceManager tj_FaceReadFaceDetailWithFaceIDs:@[faceID] getFaceUrl:YES
    completionHandler:^(NSArray<ZHTJFaceDetailModel *> *faceDetailMDAry, ZHTJFaceError *error) {
    …
}];

修改人脸标示

接口名称

tj_FaceMarkWithFaceID:faceUserParam:faceTag:

描述

用户绑定成功后,通过有效的FaceID修改人脸标示信息;

参数

参数名 参数类型 参数说明
必须 faceID NSString 有效的FaceID
可选 faceUserParam NSString Face的标示信息
faceTag NSString Face的标示信息

返回值说明

字段 类型 说明
faceDetailMDAry ZHTJFaceModel Face的基础数据模型
faceID NSString Face 的ID
faceUserParam NSString Face的标记信息
faceTag NSString Face的标记信息
error ZHTJFaceError 错误信息详情,code为0时表示成功
code NSInteger 状态码
msg NSString 状态说明
msgID NSString 当次请求ID

调用示例

[ZHTJFaceManager tj_FaceMarkWithFaceID:faceID faceUserParam: faceUserParam faceTag:faceTag
    completionHandler:^(ZHTJFaceModel *faceMD, ZHTJFaceError *error) {
    …
}];

分析人脸特征

接口名称

tj_FaceAnalyzeWithFaceIDs:

描述

用户绑定成功后,通过有效的FaceID分析人脸特征;

参数

参数名 参数类型 参数说明
必须 faceIDAry NSArray<NSString *> 有效的FaceID数组;

返回值说明

字段 类型 说明
faceFeaturesMDAry NSArray <ZHTJFaceFeaturesModel *> Face的特征数据模型数组
faceID NSString Face 的ID
faceUserParam NSString Face的标记信息
faceTag NSString Face的标记信息
faceRect CGRect Face在所属图片的位置
faceAge CGFloat Face的年龄
faceGender NSArray Face的性别概率数组数组,@[女,男];
pointStrAry NSArray 人脸特征点数组
注:特征点坐标有可能出现负值,请开发者注意处理。
error ZHTJFaceError 错误信息详情,code为0时表示成功
code NSInteger 状态码
msg NSString 状态说明
msgID NSString 当次请求ID

调用示例

[ZHTJFaceManager tj_FaceAnalyzeWithFaceIDs:@[faceID]
    completionHandler:^(NSArray<ZHTJFaceFeaturesModel *>* faceFeaturesMDAry, ZHTJFaceError *error) {
    …
}];

删除人脸(FaceSetID)

接口名称

tj_FaceSetRemoveFaceIDs:faceSetID:

描述

绑定用户后,根据已存在faceSet的ID和已添加到FaceSet中faceID,将该Face从FaceSet中删除;

注意:调用该接口后,需要调用刷新集合数据接口,在集合检索中才能生效。
建议:批量操作后调用一次刷新集合数据接口即可。

参数

参数名 参数类型 参数说明
必须 faceSetID NSString faceSet的ID
faceIDAry NSArray<NSString *> 有效的FaceID的数组

返回值说明

字段 类型 说明
faceOperationMD ZHTJFaceOperationModel 操作Face的数据模型
face_OperationCount NSInteger 操作的数量
face_Count NSInteger 操作后FaceSet中Face的数量
error ZHTJFaceError 错误信息详情,code为0时表示成功
code NSInteger 状态码
msg NSString 状态说明
msgID NSString 当次请求ID

调用示例

[ZHTJFaceManager tj_FaceSetRemoveFaceIDs:@[faceID] faceSetID:faceSetID
    completionHandler:^(ZHTJFaceOperationModel *faceOperationMD, ZHTJFaceError *error) {
    …
}];

删除人脸(FaceSetName)

接口名称

tj_FaceSetRemoveFaceIDs:faceSetName:

描述

绑定用户后,根据已存在faceSet的名称和已添加到FaceSet中faceID,将该Face从FaceSet中删除;

注意:调用该接口后,需要调用刷新集合数据接口,在集合检索中才能生效。
建议:批量操作后调用一次刷新集合数据接口即可。

参数

参数名 参数类型 参数说明
必须 faceSetName NSString faceSet的名称
faceIDAry NSArray<NSString *> 有效的FaceID的数组

返回值说明

字段 类型 说明
faceOperationMD ZHTJFaceOperationModel 操作Face的数据模型
face_OperationCount NSInteger 操作的数量
face_Count NSInteger 操作后FaceSet中Face的数量
error ZHTJFaceError 错误信息详情,code为0时表示成功
code NSInteger 状态码
msg NSString 状态说明
msgID NSString 当次请求ID

调用示例

[ZHTJFaceManager tj_FaceSetRemoveFaceIDs:@[faceID] faceSetName:faceSetName
    completionHandler:^(ZHTJFaceOperationModel *faceOperationMD, ZHTJFaceError *error) {
    …
}];

刷新集合数据

接口名称

tj_RefreshWithFaceSetID:

描述

用户绑定成功后,根据faceSet的ID对faceSet的人脸数据进行刷新,可把人脸数据加入缓存,加快人脸检索速度。

注:每次对faceSet进行增加Face或删除Face后,调用该接口进行数据刷新,其他操作不需要进行刷新。

参数

参数名 参数类型 参数说明
必须 faceSetID NSString FaceSet的ID

返回值说明

字段 类型 说明
resoutCode NSInteger 返回0表示刷新成功;
非0表示刷新失败;
error ZHTJFaceError 错误信息详情,code为0时表示成功
code NSInteger 状态码
msg NSString 状态说明
msgID NSString 当次请求ID

调用示例

[ZHTJSearchManager tj_RefreshWithFaceSetID:faceSetID
    completionHandler:^(NSInteger resoutCode, ZHTJFaceError *error) {
    …
}];

人脸检索(FaceSetID,FaceID)

接口名称

tj_SearchFaceWithFaceSetID:faceID:topCount:

描述

用户绑定成功后,根据有效FaceSet的ID,使用FaceID在faceSet中检索最相似的face;FaceID可以通过 人脸区域检测人脸对比(Img:Img) 获得;

参数

参数名 参数类型 参数说明
必须 faceSetID NSString FaceSet的ID
faceID NSString 有效的FaceID
可选 topCount NSUInteger 当检测到有多个结果时,确定返回的个数;默认为1;

返回值说明

字段 类型 说明
faceSearchMD ZHTJFaceSearchModel 检索的数据模型
faceID NSString 原始待比对的faceId
faceRect CGRect Face在所属图片的位置(使用图片检索时返回)
resultMDAry NSArray<ZHTJFaceResultModel *> FaceResoultModel的数组
faceID NSString Face的ID
faceUserParam NSString Face的标记信息
confidence CGFloat 相似度
error ZHTJFaceError 错误信息详情,code为0时表示成功
code NSInteger 状态码
msg NSString 状态说明
msgID NSString 当次请求ID

调用示例

[ZHTJSearchManager tj_SearchFaceWithFaceSetID:faceSetID faceID:faceID topCount:topCount
    completionHandler:^(ZHTJFaceSearchModel *faceSearchMD, ZHTJFaceError *error) {
    …
}];

人脸检索(FaceSetName,FaceID)

接口名称

tj_SearchFaceWithFaceSetName:faceID:topCount:

描述

用户绑定成功后,根据有效FaceSet的名称,使用FaceID在faceSet中检索最相似的face;FaceID可以通过 人脸区域检测人脸对比(Img:Img) 获得;

参数

参数名 参数类型 参数说明
必须 faceSetName NSString FaceSet的名称
faceID NSString 有效的FaceID
可选 topCount NSUInteger 当检测到有多个结果时,确定返回的个数;默认为1;

返回值说明

字段 类型 说明
faceSearchMD ZHTJFaceSearchModel 检索的数据模型
faceID NSString 原始待比对的faceId
faceRect CGRect Face在所属图片的位置(使用图片检索时返回)
resultMDAry NSArray<ZHTJFaceResultModel *> FaceResoultModel的数组
faceID NSString Face的ID
faceUserParam NSString Face的标记信息
confidence CGFloat 相似度
error ZHTJFaceError 错误信息详情,code为0时表示成功
code NSInteger 状态码
msg NSString 状态说明
msgID NSString 当次请求ID

调用示例

[ZHTJSearchManager tj_SearchFaceWithFaceSetName:faceSetName faceID:faceID topCount:topCount
    completionHandler:^(ZHTJFaceSearchModel *faceSearchMD, ZHTJFaceError *error) {
    …
}];

人脸检索(FaceSetID,Img)

接口名称

tj_SearchFaceWithFaceSetID:img:topCount:

描述

用户绑定成功后,根据有效FaceSet的ID,使用img在faceSet中检索最相似的face;img上有多张人脸时,只对识别度最高的人脸做操作;

参数

参数名 参数类型 参数说明
必须 faceSetID NSString FaceSet的ID
image UIImage 分辨率小于1920*1920,且至少有一张人脸在图片上;
可选 topCount NSUInteger 当检测到有多个结果时,确定返回的个数;默认为1;

返回值说明

字段 类型 说明
faceSearchMD ZHTJFaceSearchModel 检索的数据模型
faceID NSString 原始待比对的faceId
faceRect CGRect Face在所属图片的位置(使用图片检索时返回)
resultMDAry NSArray<ZHTJFaceResultModel *> FaceResoultModel的数组
faceID NSString Face的ID
faceUserParam NSString Face的标记信息
confidence CGFloat 相似度
error ZHTJFaceError 错误信息详情,code为0时表示成功
code NSInteger 状态码
msg NSString 状态说明
msgID NSString 当次请求ID

调用示例

[ZHTJSearchManager tj_SearchFaceWithFaceSetID:faceSetID img:image topCount:topCount
    completionHandler:^(ZHTJFaceSearchModel *faceSearchMD, ZHTJFaceError *error) {
    …
}];

人脸检索(FaceSetName,Img)

接口名称

tj_SearchFaceWithFaceSetName:img:topCount:

描述

用户绑定成功后,根据有效FaceSet的名称,使用img在faceSet中检索最相似的face;img上有多张人脸时,只对识别度最高的人脸做操作;

参数

参数名 参数类型 参数说明
必须 faceSetName NSString FaceSet的名称
image UIImage 分辨率小于1920*1920,且至少有一张人脸在图片上;
可选 topCount NSUInteger 当检测到有多个结果时,确定返回的个数;默认为1;

返回值说明

字段 类型 说明
faceSearchMD ZHTJFaceSearchModel 检索的数据模型
faceID NSString 原始待比对的faceId
faceRect CGRect Face在所属图片的位置(使用图片检索时返回)
resultMDAry NSArray<ZHTJFaceResultModel *> FaceResoultModel的数组
faceID NSString Face的ID
faceUserParam NSString Face的标记信息
confidence CGFloat 相似度
error ZHTJFaceError 错误信息详情,code为0时表示成功
code NSInteger 状态码
msg NSString 状态说明
msgID NSString 当次请求ID

调用示例

[ZHTJSearchManager tj_SearchFaceWithFaceSetName:faceSetName img:image topCount:topCount
    completionHandler:^(ZHTJFaceSearchModel *faceSearchMD, ZHTJFaceError *error) {
    …
}];

人脸对比(Img:Img)

接口名称

tj_CompareImageAry:

描述

用户绑定成功后,根据两张图片对比两张Face的相似度;当图片上有多张人脸时,只选取识别度最高的人脸做对比;

参数

参数名 参数类型 参数说明
必须 ImgAry NSArray<UIImage*> 分辨率小于1920*1920,至少有一张人脸的图片数组;

返回值说明

字段 类型 说明
confidence CGFloat 相似度
faceFeaturesMDAry NSArray<ZHTJFaceFeaturesModel*> Face特征数据模型数组
faceID NSString Face 的ID
注:faceId如果连续72小时没有存放在任意FaceSet中,则该faceId将会失效。
faceUserParam NSString Face的标记信息
faceTag NSString Face的标记信息
faceRect CGRect Face在所属图片的位置
faceAge CGFloat Face的年龄
faceGender NSArray Face的性别概率数组数组,@[女,男];
pointStrAry NSArray 人脸特征点数组
注:特征点坐标有可能出现负值,请开发者注意处理。
error ZHTJFaceError 错误信息详情,code为0时表示成功
code NSInteger 状态码
msg NSString 状态说明
msgID NSString 当次请求ID

调用示例

[ZHTJCompareManager tj_CompareImageAry:@[image1,image2]
    completionHandler:^(CGFloat confidence, NSArray<ZHTJFaceFeaturesModel*>*faceFeaturesMDAry, ZHTJFaceError *error) {
    …
}];

人脸对比(FaceID:Img)

接口名称

tj_CompareFaceID:image:

描述

用户绑定成功后,根据一个有效的FaceID和一张图片对比的相似度;FaceID可以通过 人脸区域检测人脸对比(Img:Img) 获得;当图片上有多张人脸时,只选取识别度最高的人脸做对比;

参数

参数名 参数类型 参数说明
必须 faceID NSString 有效的FaceID
image UIImage 分辨率小于1920*1920,且至少有一张人脸在图片上;

返回值说明

字段 类型 说明
confidence CGFloat 相似度
faceFeaturesMDAry NSArray<ZHTJFaceFeaturesModel*> Face特征数据模型数组
faceID NSString Face 的ID
注:faceId如果连续72小时没有存放在任意FaceSet中,则该faceId将会失效。
faceUserParam NSString Face的标记信息
faceTag NSString Face的标记信息
faceRect CGRect Face在所属图片的位置
faceAge CGFloat Face的年龄
faceGender NSArray Face的性别概率数组数组,@[女,男];
pointStrAry NSArray 人脸特征点数组
注:特征点坐标有可能出现负值,请开发者注意处理。
error ZHTJFaceError 错误信息详情,code为0时表示成功
code NSInteger 状态码
msg NSString 状态说明
msgID NSString 当次请求ID

调用示例

[ZHTJCompareManager tj_CompareFaceID:faceID image:image
    completionHandler:^(CGFloat confidence, NSArray<ZHTJFaceFeaturesModel*>*faceFeaturesMDAry, ZHTJFaceError *error) {
    …
}];

人脸对比(FaceID:FaceID)

接口名称

tj_CompareWithFaceIDAry:

描述

用户绑定成功后,根据两个有效的FaceID对比两张Face的相似度;FaceID可以通过 人脸区域检测人脸对比(Img:Img) 获得;

参数

参数名 参数类型 参数说明
必须 faceIDAry NSArray<NSString*> 有效的FaceID数组

返回值说明

字段 类型 说明
confidence CGFloat 相似度
error ZHTJFaceError 错误信息详情,code为0时表示成功
code NSInteger 状态码
msg NSString 状态说明
msgID NSString 当次请求ID

调用示例

[ZHTJCompareManager tj_CompareWithFaceIDAry:@[faceID1,faceID2]
    completionHandler:^(CGFloat confidence, ZHTJFaceError *error) {
    …
}];

返回状态码

状态码 描述
0 SUCCESS 成功
1101 DB_ADD_OP_ERROR 数据库添加异常
1102 DB_UPDATE_OP_ERROR 数据库更新异常
1103 DB_DELETE_OP_ERROR 数据库删除异常
1104 DB_QUERY_OP_ERROR 数据库查询异常
1800 HTTP_ERROR http链接错误
1801 NET_ERROR 当前网络不可用
1900 API_ERROR 服务错误
1901 MISSING_ARGUMENTS 缺少必要参数
1902 INVALID_ARGUMENTS 参数非法
1903 WRONG_ARGUMENTS 参数解析错误
1904 API_NOT_FOUND 不支持的操作
1905 INVALID_ID 用户名不存在
1906 NAME_EXISTS Name已存在
1907 FACESET_NOT_EMPTY FaceSet不为空
1908 NO_FACE_DETECTED 图片中未检测到人脸
1909 MULTI_FACES_DETECTED 图片中检测到多张人脸
1910 FACESET_NO_FACE 集合中没有人脸
1951 INVALID_IMAGE_SIZE 图片像素分辨率超过限制(1920X1920)
1952 LARGE_SIZE 图片字节过大
1953 NOT_BINDING 用户未绑定
1954 NOT_AUTH 未授权
1955 NOT_UNPACK 图片无法解压

ZHTJFaceSetModel

字段 类型 说明
faceSetName NSString FaceSet 的名称
faceSetID NSString FaceSet 的ID
faceSetTag NSString FaceSet 的标记
faceSetUserParam NSString FaceSet 的标记

ZHTJFaceSetDetailModel

字段 类型 说明
faceSetName NSString FaceSet 的名称
faceSetID NSString FaceSet 的ID
faceSetTag NSString FaceSet 的标记
faceSetUserParam NSString FaceSet 的标记
face_Count NSString FaceSet 中Face的数量
faceIDAry NSArray< NSString *> FaceSet 中FaceID的数组

ZHTJFaceOperationModel

字段 类型 说明
face_OperationCount NSInteger 操作的数量
face_Count NSInteger 操作后FaceSet中Face的数量

ZHTJFaceDetailModel

字段 类型 说明
faceID NSString Face 的ID
faceUserParam NSString Face的标记信息
faceTag NSString Face的标记信息
faceRect CGRect Face在所属图片的位置
faceAge CGFloat Face的年龄
faceGender NSArray Face的性别概率数组数组,@[女,男];
faceSetAry NSArray<NSString*> Face关联的FaceSet的ID数组
faceImgID NSString Face所属图片的图片ID
faceUrl NSString Face的地址

ZHTJFaceModel

字段 类型 说明
faceID NSString Face 的ID
faceUserParam NSString Face的标记信息
faceTag NSString Face的标记信息

ZHTJFaceFeaturesModel

字段 类型 说明
faceID NSString Face 的ID
faceUserParam NSString Face的标记信息
faceTag NSString Face的标记信息
faceRect CGRect Face在所属图片的位置
faceAge CGFloat Face的年龄
faceGender NSArray Face的性别概率数组数组,@[女,男];
pointStrAry NSArray 人脸特征点数组
注:特征点坐标有可能出现负值,请开发者注意处理。

ZHTJFaceSearchModel

字段 类型 说明
faceID NSString 原始待比对的faceId
faceRect CGRect Face在所属图片的位置(使用图片检索时返回)
resultMDAry NSArray<ZHTJFaceResultModel *> FaceResoultModel的数组

ZHTJFaceResultModel

字段 类型 说明
faceID NSString Face的ID
faceUserParam NSString Face的标记信息
confidence CGFloat 相似度

ZHTJFaceError

字段 类型 说明
code NSInteger 状态码
msg NSString 状态说明
msgID NSString 当次请求ID
Q群
咨询