为帮助用户更好更快的使用插件,论坛维护了一个示例,示例中包含示例代码供您参考。
baiduFaceRec插件封装了百度AI人脸识别功能,使用此插件可实现百度人脸检测(包括age,beauty,expression,faceshape,gender,glasses,landmark,race,quality,facetype信息)、人脸对比功能(比对两张图片中人脸的相似度,并返回相似度分值)。暂仅支持 android 平台。
使用说明:
1、首先要在百度AI开放平台注册账号;
2、创建应用,选择需要使用文字识别选项,然后获取API Key、Secret Key,后面需要使用ak、sk进行百度身份验证;
3、具体操作可参考百度AI开发平台文档;
4、此插件是封装了百度人脸识别V3版本,在注册应用的时候注意版本选择;
获取access_token错误说明:
对应的是错误码、错误信息、解释(错误返回err.msg):
error:错误码;关于错误码的详细信息请参考下方鉴权认证错误码。
error_description:错误描述信息,帮助理解和解决发生的错误。
errorAccess unknown client id API Key 不正确
invalid_client Client authentication failed Secret Key不正确
识别验证错误说明:
对应的是错误码、错误信息、描述(错误返回err.msg):
4 Open api request limit reached 集群超限额
6 no permission to access data 没有接口权限
17 Open api daily request limit reached 每天流量超限额
18 Open api qps request limit reached QPS超限额
19 Open api total request limit reached 请求总量超限额
100 Invalid parameter 无效的access_token参数
110 Access token invalid or no longer valid Access Token失效
111 Access token expired Access token过期
222001 param[] is null 必要参数未传入
222009 quality_conf format error 参数格式错误
222013 param[image] format error 参数格式错误
222015 param[image_type] format error 参数格式错误
222016 param[max_face_num] format error 参数格式错误
222017 param[face_field] format error 参数格式错误
222024 param[face_type] format error 参数格式错误
222025 param[face_token] format error 参数格式错误
222026 param[max_star_num] format error 参数格式错误
222201 network not available 服务端请求失败
222202 pic not has face 图片中没有人脸
222203 image check fail 无法解析人脸
222204 image_url_download_fail 从图片的url下载图片失败
222205 network not availablel 服务端请求失败
222206 rtse service return fail 服务端请求失败
222207 match user is not found 未找到匹配的用户
222208 the number of image is incorrect 图片的数量错误
222209 face token not exist face token不存在
222300 add face fail 人脸图片添加失败
222301 get face fail 获取人脸图片失败
222302 system error 服务端请求失败
222303 get face fail 获取人脸图片失败
223112 quality_conf format error quality_conf 格式不正确
223113 face is covered 人脸有被遮挡
223114 face is fuzzy 人脸模糊
223115 face light is not good 人脸光照不好
223116 incomplete face 人脸不完整
223117 app_list is too large app_list包含app数量过多
222901 system busy 系统繁忙请重新尝试
222902 system busy 系统繁忙请重新尝试
222903 system busy 系统繁忙请重新尝试
222904 system busy 系统繁忙请重新尝试
222905 system busy 系统繁忙请重新尝试
222906 system busy 系统繁忙请重新尝试
222907 system busy 系统繁忙请重新尝试
222908 system busy 系统繁忙请重新尝试
222909 system busy 系统繁忙请重新尝试
222910 system busy 系统繁忙请重新尝试
222911 system busy 系统繁忙请重新尝试
222912 system busy 系统繁忙请重新尝试
222913 system busy 系统繁忙请重新尝试
222914 system busy 系统繁忙请重新尝试
222915 system busy 系统繁忙请重新尝试
222916 system busy 系统繁忙请重新尝试
222361 system busy 系统繁忙请重新尝试
获取access_token
getAuth({params},callback(ret, err))
ak:
sk:
ret:
内部字段:
{
access_token: //要获取的Access Token
session_key: //暂无使用
scope: ////暂无使用
refresh_token: //暂无使用
session_secret: //暂无使用
expires_in: //Access Token的有效期(秒为单位,一般为1个月)
}
err:
内部字段:
{
msg: //返回错误信息
}
var baiduFaceRec= api.require('baiduFaceRec');
var param = {
ak: 'your ak',
sk: 'your sk',
};
baiduFaceRec.getAuth(params, function (ret, err) {
if (ret) {
console.log(JSON.stringify(ret));
alert('access_token=' + ret.access_token);
} else {
console.log(err.msg);
alert('错误信息:' + err.msg);
}
});
请确保参数ak、sk正确,身份验证在使用前验证一次即可(有效期一个月),建议每次调用接口方法先获取最新access_token
Android系统
可提供的1.0.0及更高版本
人脸检测
detect({params},callback(ret, err))
filePath:
access_token:
ret:
内部字段(字段(加号表示层级) 类型 说明):
{
error_code int 错误编号
error_msg string 错误信息
log_id int 日志id
timestamp int 时间戳
cached int 缓存
result json 对比结果
+face_num int 检测到的图片中的人脸数量
+face_list array 人脸信息列表,具体包含的参数参考下面的列表。
++face_token string 人脸图片的唯一标识
++location array 人脸在图片中的位置
+++left double 人脸区域离左边界的距离
+++top double 人脸区域离上边界的距离
+++width double 人脸区域的宽度
+++height double 人脸区域的高度
+++rotation int64 人脸框相对于竖直方向的顺时针旋转角,[-180,180]
++face_probability double 人脸置信度,范围【0~1】,代表这是一张人脸的概率,0最小、1最大。
++angel array 人脸旋转角度参数
+++yaw double 三维旋转之左右旋转角[-90(左), 90(右)]
+++pitch double 三维旋转之俯仰角度[-90(上), 90(下)]
+++roll double 平面内旋转角[-180(逆时针), 180(顺时针)]
++age double 年龄 ,当face_field包含age时返回
++beauty int64 美丑打分,范围0-100,越大表示越美。当face_fields包含beauty时返回
++expression array 表情,当 face_field包含expression时返回
+++type string none:不笑;smile:微笑;laugh:大笑
+++probability double 表情置信度,范围【0~1】,0最小、1最大。
++face_shape array 脸型,当face_field包含faceshape时返回
+++type double square: 正方形 triangle:三角形 oval: 椭圆 heart: 心形 round: 圆形
+++probability double 置信度,范围【0~1】,代表这是人脸形状判断正确的概率,0最小、1最大。
++gender array 性别,face_field包含gender时返回
+++type string male:男性 female:女性
+++probability double 性别置信度,范围【0~1】,0代表概率最小、1代表最大。
++glasses array 是否带眼镜,face_field包含glasses时返回
+++type string none:无眼镜,common:普通眼镜,sun:墨镜
+++probability double 眼镜置信度,范围【0~1】,0代表概率最小、1代表最大。
++race array 人种 face_field包含race时返回
+++type string yellow: 黄种人 white: 白种人 black:黑种人 arabs: 阿拉伯人
+++probability double 人种置信度,范围【0~1】,0代表概率最小、1代表最大。
++facetype array 真实人脸/卡通人脸 face_field包含facetype时返回
+++type string human: 真实人脸 cartoon: 卡通人脸
+++probability double 人脸类型判断正确的置信度,范围【0~1】,0代表概率最小、1代表最大。
++landmark array 4个关键点位置,左眼中心、右眼中心、鼻尖、嘴中心。face_field包含landmark时返回
++landmark72 array 72个特征点位置 face_field包含landmark时返回
++quality array 人脸质量信息。face_field包含quality时返回
+++occlusion array 人脸各部分遮挡的概率,范围[0~1],0表示完整,1表示不完整
++++left_eye double 左眼遮挡比例,[0-1] ,1表示完全遮挡
++++right_eye double 右眼遮挡比例,[0-1] , 1表示完全遮挡
++++nose double 鼻子遮挡比例,[0-1] , 1表示完全遮挡
++++mouth double 嘴巴遮挡比例,[0-1] , 1表示完全遮挡
++++left_cheek double 左脸颊遮挡比例,[0-1] , 1表示完全遮挡
++++right_cheek double 右脸颊遮挡比例,[0-1] , 1表示完全遮挡
++++chin double 下巴遮挡比例,,[0-1] , 1表示完全遮挡
+++blur double 人脸模糊程度,范围[0~1],0表示清晰,1表示模糊
+++illumination double 取值范围在[0~255], 表示脸部区域的光照程度 越大表示光照越好
+++completeness int64 人脸完整度,0或1, 0为人脸溢出图像边界,1为人脸都在图像边界内
}
err:
内部字段:
{
msg: //返回错误信息
}
var baiduFaceRec= api.require('baiduFaceRec');
var param = {
filePath: 'your filePath',
access_token:'your access_token',
};
baiduFaceRec.detect(param, function (ret, err) {
if (ret) {
console.log(JSON.stringify(ret));
alert('人脸检测数据' + JSON.stringify(ret.result.face_list));
} else {
console.log(err.msg);
alert('错误信息:' + err.msg);
}
});
请确保参数filePath、access_token正确,filePath是图片绝对路径,可是有apicloud官方的api.getPicture()获取图片记得地址。
Android系统
可提供的1.0.0及更高版本
人脸对比
match({params},callback(ret, err))
filePath1:
filePath2:
access_token:
ret:
内部字段:
{
error_code int 错误编号
error_msg string 错误信息
log_id int 日志id
timestamp int 时间戳
cached int 缓存
result json 对比结果
+score int 人脸相似度得分
+face_list array 人脸信息列表
++face_token string 人脸的唯一标志
}
err:
内部字段:
{
msg: //返回错误信息
}
var baiduFaceRec= api.require('baiduFaceRec');
var param = {
filePath1: 'your filePath1',
filePath2: 'your filePath2',
access_token: 'your access_token',
};
baiduFaceRec.match(param, function (ret, err) {
if (ret) {
console.log(JSON.stringify(ret));
alert('人脸对比数据' + JSON.stringify(ret));
} else {
console.log(err.msg);
alert('错误信息:' + err.msg);
}
});
请确保参数filePath1、filePath2、access_token正确,filePath1、filePath2都为绝对路径,可以使用官方插件UIAlbumBrowser得到对比图片路径,两个参数没有先后顺序,只要保证是图片绝对路径即可。
Android系统
可提供的1.0.0及更高版本