前言:
折腾了一晚上,有感于百度支持文档尚未完全兼容Python3,和笔记本续航不行。彻底搞懂之后,在这里写一个小例子,方便大家参考调试。
一:首先,先说几个大家关注的方面:
报错信息整理,比官方文档更全面的小站:http://aixiaoshuai.mydoc.io/
222209 |
face token not exist |
face_token不存在 1.请检查确认face_token是否正确 2.请检查image_type参数值是否为FACE_TOKEN 3.请确认image参数填写的值为face_token 如果为图片的base64数据,则image_type参数值是BASE64 |
param参数中的[image_type]建议用BASE64,这是最省事的办法。这篇教程以此为基础展开。
转换常见图片格式至BASE64方法:
def img_to_BASE64(slef,path):
with open(path,'rb') as f:
base64_data = base64.b64encode(f.read())
return base64_data
获取Access_TOKEN方法:
def get_accessToken(self):
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + self.AK + '&client_secret=' + self.SK
response = requests.get(host, headers=self.headers)
json_result = json.loads(response.text)
return json_result['access_token']
注意:access_token
的有效期为30天,切记需要每30天进行定期更换,或者每次请求都拉取新token;
笔者实际操作中,采取每次请求都拉取新token。优点你懂。
获取过程中可能遇到的问题解释:
invalid_clientunknown client id API Key不正确
invalid_clientClient authentication failed Secret Key不正确
在Python 3里,我们这样定义一个结构,这里与官方文档不同:
#典型结构sample,不需要加\
sample = {"image":"test.JPG","image_type":"FACE_TOKEN","face_field":"faceshape,facetype"}
二:API调用
- 返回字段和它的意义
字段 | 必选 | 类型 | 说明 |
---|---|---|---|
face_num | 是 | int | 检测到的图片中的人脸数量 |
face_list | 是 | array | 人脸信息列表,具体包含的参数参考下面的列表。 |
+face_token | 是 | string | 人脸图片的唯一标识 |
+location | 是 | array | 人脸在图片中的位置 |
++left | 是 | double | 人脸区域离左边界的距离 |
++top | 是 | double | 人脸区域离上边界的距离 |
++width | 是 | doubl |