百度AI攻略:人脸情绪识别

首先认证受权:python

在开始调用任何API以前须要先进行认证受权,具体的说明请参考:json

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

获取Access Token函数

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

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

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

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

例如:code

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

具体代码以下:

# -*- 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}

可见检测的仍是很准的。

相关文章
相关标签/搜索