1. 接口说明

对两张通过接口上传的人脸照片进行比对,来判断是否为同一个人

若上传的照片中包含 exif 方向信息,我们会按此信息旋转、翻转后再做后续处理。

同时,我们还提供自动旋转功能,当照片方向混乱且 exif 方向信息不存在或不正确的情况下,服务会根据照片中人脸方向来检查可能正确的方向,并按照正确的方向提供人脸检测结果。

2. 接口地址

POST http://api.xfyun.cn/v1/service/v1/image_identify/watermark_verification HTTP/1.1
Content-Type:application/x-www-form-urlencoded; charset=utf-8

3. 请求参数

在 Http Request Header 中配置授权认证参数,见【接口描述-授权认证。 其中 X-Param 为各配置参数组成的 JSON 串经 BASE64 编码之后的字符串,原始 JSON 串各字段说明如下:

参数 类型 必须 说明 示例
auto_rotate bool 是否对图片进行自动旋转,true旋转,false不旋转,默认false true

X-Param生成示例:

原始JSON串:
{
    "auto_rotate": True,
}
BASE64编码(即X-Param):
ewoJICAgICJhdXRvX3JvdGF0ZSI6ICJ0cnVlIiwKCX0=

在 Http Request Body 中配置以下参数:

参数 类型 必须 说明
face_image string 需上传的人脸照,base64编码后与base64编码后的水印照整体进行 urlencode,格式必须为JPG(JPEG),BMP,PNG,GIF,TIFF之一,宽和高必须大于8px,小于等于4000px,要求原始图片大小不超过5M
watermark_image string 需上传的水印照,base64编码后与base64编码后的人脸照整体进行 urlencode,,格式必须为JPG(JPEG),BMP,PNG,TIFF之一,宽和高必须大于 8px,小于等于480px,原始文件尺寸小于等于1MB

4. 返回值

返回值为 json 串,各字段如下:

参数 类型 说明
code string 结果码(具体见错误码)
data float 得分,值为 0~1,值越大表示是同一个人的可能性越大
desc string 描述
sid string 会话ID

其中 sid 字段主要用于追查问题,如果出现问题,可以提供 sid 给讯飞技术人员帮助确认问题。

data中得分阈值与错误率对应关系:

阈值 0.4 0.5 0.6 0.7 0.8 0.9
错误率 十分之一 百分之一 千分之一 万分之一 十万分之一 百万分之一

建议阈值:0.7~0.8

示例如下:

失败:

{
    "code": "10106",
    "desc": "invalid parameter|invalid X-Appid",
    "data": 0,
    "sid": "iwv0000bb3f@ch3d5c059d83b3477200"
}

成功:

{
"data":0.7,
"code":"0",
"desc":"success",
"sid":"iwv00000001@ch36940e324c59000100"
}

5. 调用示例

python脚本示例(python版本号 3.6)

说明:将脚本中 FACE_IMAGE_PATH, WATERMARK_IMAGE_PATHAPI_KEY, APPID, 换成相应的图片路径,讯飞开放平台提供的 apiKey,讯飞开放平台应用的 appid 即可,运行脚本可打印相应结果。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import requests
import time
import json
import hashlib
import base64


def main():
    x_appid = 'APPID'
    api_key = 'API_KEY'
    url = 'http://api.xfyun.cn/v1/service/v1/image_identify/watermark_verification'
    x_time = str(int(time.time()))
    param = {'auto_rotate': True}
    param = json.dumps(param)
    x_param = base64.b64encode(param.encode('utf-8'))
    m2 = hashlib.md5()
    m2.update(str(api_key + x_time + str(x_param,'utf-8')).encode('utf-8'))
    x_checksum = m2.hexdigest()
    x_header = {
        'X-Appid': x_appid,
        'X-CurTime': x_time,
        'X-CheckSum': x_checksum,
        'X-Param': x_param,
    }
    with open(r'FACE_IMAGE_PATH', 'rb') as f:
        f1 = f.read()
    with open(r'WATERMARK_IMAGE_PATH', 'rb') as f:
        f2 = f.read()
    f1_base64 = str(base64.b64encode(f1), 'utf-8')
    f2_base64 = str(base64.b64encode(f2), 'utf-8')
    data = {
        'face_image': f1_base64,
        'watermark_image': f2_base64,
            }
    req = requests.post(url, data=data, headers=x_header)
    result = str(req.content, 'utf-8')
    print(result)
    return


if __name__ == '__main__':
    main() 
Copyright © iflytek.com 2018 all right reserved,powered by Gitbook该文件修订时间: 2018-11-03 10:26:45

results matching ""

    No results matching ""