首先认证授权:

在开始调用任何API之前需要先进行认证授权,具体的说明请参考:

http://ai.baidu.com/docs#/Auth/top

获取Access Token

向授权服务地址https://aip.baidubce.com/oauth/2.0/token发送请求(推荐使用POST),并在URL中带上以下参数:

grant_type:?必须参数,固定为client_credentials;

client_id:?必须参数,应用的API Key;

client_secret:?必须参数,应用的Secret Key;

例如:

https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=Va5yQRHlA4Fq5eR3LT0vuXV4&client_secret=0rDSjzQ20XUj5itV6WRtznPQSzr5pVw2&

具体代码如下:

# -*- coding: utf-8 -*-

#!/usr/bin/env python

import urllib

import json

#client_id 为官网获取的AK, client_secret 为官网获取的SK

client_id =【百度云应用的AK】

client_secret =【百度云应用的SK】

#获取token

def get_token():

host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + client_id + '&client_secret=' + client_secret

request = urllib.request.Request(host)

request.add_header('Content-Type', 'application/json; charset=UTF-8')

response = urllib.request.urlopen(request)

token_content = response.read()

if token_content:

token_info = json.loads(token_content)

token_key = token_info['access_token']

return token_key

人脸情绪识别

具体说明请查阅: http://ai.baidu.com/docs#/Face-Detect-V3/top

人脸识别接口分为V2和V3两个版本,本文档为V3版本接口的说明文档,请确认您在百度云后台获得的是V3版本接口权限,再来阅读本文档。

能力介绍

人脸检测:检测图片中的人脸并标记出位置信息;

人脸关键点:展示人脸的核心关键点信息,及150个关键点信息。

人脸属性值:展示人脸属性信息,如年龄、性别等。

人脸质量信息:返回人脸各部分的遮挡、光照、模糊、完整度、置信度等信息。

业务应用

典型应用场景:如人脸属性分析,基于人脸关键点的加工分析,人脸营销活动等。

调用方式

向API服务地址使用POST发送请求,必须在URL中带上参数access_token,可通过后台的API Key和Secret Key生成,具体方式请参考“Access Token获取”。

请求说明

请求体格式化:Content-Type为application/json,通过json格式化请求体。

Base64编码:请求的图片需经过Base64编码,图片的base64编码指将图片数据编码成一串字符串,使用该字符串代替图像地址。您可以首先得到图片的二进制,然后用Base64格式编码即可。需要注意的是,图片的base64编码是不包含图片头的,如data:image/jpg;base64,

图片格式:现支持PNG、JPG、JPEG、BMP,不支持GIF图片

HTTP方法:POST

请求URL: https://aip.baidubce.com/rest/2.0/face/v3/detect

Python3代码如下:

#获取人脸情绪信息

def face_detect_emotion(url):

    request_url = "https://aip.baidubce.com/rest/2.0/face/v3/detect"


    params = dict()

    params['image'] = url

    params['image_type'] = 'URL'

    params['face_field'] = 'emotion'


    params = json.dumps(params).encode('utf-8')


    access_token=get_token()

    request_url = request_url + "?access_token=" + access_token

    request = urllib.request.Request(url=request_url, data=params)

    request.add_header('Content-Type', 'application/json')

    response = urllib.request.urlopen(request)

    content = response.read()

    if content:

        #print (content)

        content=content.decode('utf-8')

        data = json.loads(content)

        #print (data)

        return data['result']['face_list'][0]['emotion']

    else:

        return ''

这个函数将根据网上图片URL地址获取图片并检测人脸的情绪。让我们用网上找的一张微笑的图片进行测试:

执行代码:

image_url='http://p0.qhimgs4.com/t0159dd32381d0c25b7.jpg'

print (face_detect_emotion(image_url))

返回:

{'type': 'happy', 'probability': 0.97}

可见检测的还是很准的。