1.准备工作
- 在百度al,找到人体检测
- 登录账号进入百度智能云
选择你要领取的接口(由于我之前领过了人体检测的接口,所以下面已经没有这个选项)
注意:领取接口需要认证
- 创建应用
创建成功会在应用列表显示应用,应用里面有我们编程需要用到的API Key 和 Secret Key
- 查看人体检测的API文档,可以看到里面有调用API的请求方式,以及不同语言的代码例子
2.编写访问接口的代码,采用python编程访问
我们将百度al给的python例子复制出来,放到linux的Python中运行
不出意外,报错了,因为这个open打开的是我们要检测的图片文件,而我们linux里面的图片文件不是这个名字,所以需要把 '[本地文件]' 修改成我们需要检测的图片文件
修改完毕后,重新运行我们的代码
这里出现了一个错误, Access token invalid or no longer valid ,说明access_token是无效的。这是因为我们没有获取Access token ,我们参考获取 Access Token的技术文档,编写获取Access Token的代码
# encoding:utf-8
import requests
# client_id 为官网获取的AK, client_secret 为官网获取的SK
AK='应用的API Key'
SK='应用的Secret Key'
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=%s&client_secret=%s'%(AK,SK)
request_url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/body_num"
response = requests.get(host) #获取鉴权认证使用的access_token
重新运行代码
可以看到我们的Access Token已经获取成功了,但他还是显示Access Token无效,这是因为我们没有把Access Token,放入http post的请求上。
重新运行代码,可以看到接口调用成功
完整代码:
# encoding:utf-8
import requests
import base64
'''
人体检测和属性识别
'''
# client_id 为官网获取的AK, client_secret 为官网获取的SK
AK='应用的API Key'
SK='应用的Secret Key'
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=%s&client_secret=%s'%(AK,SK)
request_url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/body_num"
response = requests.get(host) #发起get请求获取鉴权认证使用的access_token
if response:
print (response.json()) #输出信息
request_url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/body_attr"
# 二进制方式打开图片文件
f = open('image1.jpg', 'rb')
img = base64.b64encode(f.read())
params = {"image":img}
access_token = response.json()['access_token'] #提取access_token的数据
request_url = request_url + "?access_token=" + access_token #将access_token的数据放入url中
headers = {'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=params, headers=headers) #发起post请求,调用接口
if response:
print (response.json()) #输出信息