baiduFaceRec

论坛示例

为帮助用户更好更快的使用插件,论坛维护了一个示例,示例中包含示例代码供您参考。

概述

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  系统繁忙请重新尝试

getAuth

获取access_token

getAuth({params},callback(ret, err))

params

ak:

  • 类型:字符串
  • 描述:API Key
  • 说明:字段必填,不填会返回错误信息msg

sk:

  • 类型:字符串
  • 描述:Secret Key
  • 说明:字段必填,不填会返回错误信息msg

callback(ret, err)

ret:

  • 类型:JSON 对象

内部字段:

{
    access_token:  //要获取的Access Token
        session_key:  //暂无使用
        scope:  ////暂无使用
        refresh_token:  //暂无使用
        session_secret:  //暂无使用
        expires_in:  //Access Token的有效期(秒为单位,一般为1个月)
}

err:

  • 类型:JSON 对象

内部字段:

{
    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

人脸检测

detect({params},callback(ret, err))

params

filePath:

  • 类型:字符串
  • 描述:识别图片路径
  • 说明:字段必填,不填会返回错误信息msg

access_token:

  • 类型:字符串
  • 描述:获取的access_token
  • 说明:字段必填,不填会返回错误信息msg

callback(ret, err)

ret:

  • 类型:JSON 对象

内部字段(字段(加号表示层级) 类型 说明):

{
       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:

  • 类型:JSON 对象

内部字段:

{
    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

人脸对比

match({params},callback(ret, err))

params

filePath1:

  • 类型:字符串
  • 描述:识别图片路径
  • 说明:字段必填,不填会返回错误信息msg

filePath2:

  • 类型:字符串
  • 描述:识别图片路径
  • 说明:字段必填,不填会返回错误信息msg

access_token:

  • 类型:字符串
  • 描述:获取的access_token
  • 说明:字段必填,不填会返回错误信息msg

callback(ret, err)

ret:

  • 类型:JSON 对象

内部字段:

{
        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:

  • 类型:JSON 对象

内部字段:

{
    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及更高版本

是否仍需要帮助? 请保持联络!
最后更新于 2023/05/12