PYTHON 3 调用face++API代码(简单易懂)

    最近做人脸识别的项目调用了face++的API,可是官网给的代码是python2的,估计不少初学者和我一样把代码换成Python3花了不少功夫吧。现在这篇文章将简单的告诉你如何用简简单单十几行代码调用face++任意的API。

    先附上代码,运行环境:Python3.6

import requests
from json import JSONDecoder

http_url ="https://api-cn.faceplusplus.com/facepp/v3/detect"
#你要调用API的URL

key ="公钥"
secret ="私钥"
#face++提供的一对密钥

filepath1 ="D:\py\image\WIN_20180412_21_52_13_Pro.jpg"
#图片文件的绝对路径

data = {"api_key":key, "api_secret": secret, "return_attributes": "gender,age,smiling,beauty"}
#必需的参数,注意key、secret、"gender,age,smiling,beauty"均为字符串,与官网要求一致

files = {"image_file": open(filepath1, "rb")}
'''以二进制读入图像,这个字典中open(filepath1, "rb")返回的是二进制的图像文件,所以"image_file"是二进制文件,符合官网要求'''

response = requests.post(http_url, data=data, files=files)
#POTS上传

req_con = response.content.decode('utf-8')
#response的内容是JSON格式

req_dict = JSONDecoder().decode(req_con)
#对其解码成字典格式

print(req_dict)
#输出

    我调用的是Detect API,调用URL和调用方法官网上写的清清楚楚,想调用不同的方法就用相应的URL和调用方法。

我想强调的是请求参数,如果你知道如何传入参数,那么你就可以调用face++上所有的API了。

1.参数名

    参数名是字符串,除了FILE参数,其余所有参数都写进data字典里:参数名作为键,变量名或字符串作为值(如上面程序中的key,secret,"gender,age,smiling,beauty")。通常值均为字符串。

下面看看官网给的请求参数:

PYTHON 3 调用face++API代码(简单易懂)_第1张图片

PYTHON 3 调用face++API代码(简单易懂)_第2张图片

(如果看不清请点击全屏看图)

我想特别声明的是参数“return_attributes",这个参数作为键,后面对应的值就是你请求的返回属性(注意CS中attribute一般是属性的意思,它是可数名词,不是四级词汇归因于。。。),我只请求了四个变量"gender,age,smiling,beauty",想加的话直接在字符串里写就行了,它们之间用逗号间隔。


"return_attributes": "gender,age,smiling,beauty"

   

  除FILE参数其余参数都存在data字典里了,那么现在该处理FILE文件了。

  官网的描述是:

image_file

File

一个图片,二进制文件,需要用post multipart/form-data的方式上传。

参数名“image_file”,注意这个是作为files字典的键,不是让你建立一个叫image_file的文件对象。我的代码是:

files = {"image_file": open(filepath1, "rb")}                     

    open(filepath1, "rb")返回的是二进制的图像文件,rb:以二进制读取。所以"image_file"键对应的值是二进制文件,符合官网要求


2.返回值

    返回值经JSONDecode之后是字典类型的,官网例子如下:

PYTHON 3 调用face++API代码(简单易懂)_第3张图片


    具体返回值中的参数代表什么意思查询官网的返回值表格就行了。

我们回过头来看看关键点:

    1.不同API的URL

    2.此API要求的请求参数

    3.处理字典类型的返回值

怎么样,调用face++的API是不是很简单呢!


你可能感兴趣的:(Python)