人脸比对接口

2020.08.14 16:17:00

    接口地址

    https://verify.dun.163.com/v1/facecompare/check

    接口描述

    上传2张人脸图片,识别两张人脸的相似度,以判断是否为同一人。

    请求参数

    公共参数已省略,详细见 请求公共参数,其他参数如下:

    参数名称 类 型 是否必选 最大长度 描述
    avatar1 String Y URL不超过256, BASE64不超过200K 用于人脸比对的头像照,请上传无遮挡的清晰正面照,轮廓保持完整
    avatar2 String Y URL不超过256, BASE64不超过200K 用于人脸比对的头像照,请上传无遮挡的清晰正面照,轮廓保持完整
    picType Number Y 图片类型:1-URL, 2-BASE64

    响应结果

    响应字段如下,响应通用字段已省略,详细见响应通用字段

    result 数据结构

    参数名称 类型 描述
    matched Integer 比对结果,0:其他错误,1:是同一人,2:不是同一人
    score Double 相似度得分,范围0-1,分数越高,相似度越高。真人判断阈值推荐为0.55(matched字段采用该阈值)。开发者也可根据自己的认证场景依据该字段控制自己的阈值
    taskId String 本次请求数据标识,可以根据该标识在控制台进行数据查询。强烈建议开发者保存该ID,便于后续排查问题
    使用建议:如果您的图片对比源是用户头像等高度美化PS过的照片,而采集源是真实人像(比如活体检测),建议您根据score字段自行判断比对结果。PS程度越高,阈值建议设置得越低。

    请求示例

    • 备注:示例代码中的HttpClient4Utils、SignatureUtils工具类参见点击查看详情
    /** 产品密钥ID,产品标识 */
    private final static String SECRETID = "your_secret_id";
    /** 产品私有密钥,服务端生成签名信息使用,请严格保管,避免泄露 */
    private final static String SECRETKEY = "your_secret_key";
    /** 业务ID,易盾根据产品业务特点分配 */
    private final static String BUSINESSID = "your_business_id";
    /** 易盾身份认证服务人脸比对在线检测接口地址 */
    private final static String API_URL = "https://verify.dun.163yun.com/v1/facecompare/check";
    /** 实例化HttpClient,发送http请求使用,可根据需要自行调参 */
    private static HttpClient httpClient = HttpClient4Utils.createHttpClient(100, 20, 2000, 2000, 2000);
    
    /**
     *
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
        Map<String, String> params = new HashMap<String, String>();
        // 1.设置公共参数
        params.put("secretId", SECRETID);
        params.put("businessId", BUSINESSID);
        params.put("version", "v1");
        params.put("timestamp", String.valueOf(System.currentTimeMillis()));
        params.put("nonce", String.valueOf(new Random().nextInt()));
    
        // 2.设置私有参数
        params.put("avatar1", "http://p1.music.126.net/hRKlEHgk7vrn5lXB0pBbbw==/109951164471991113.jpg?imageView&thumbnail=500z500");
        params.put("avatar1", "http://p1.music.126.net/hRKlEHgk7vrn5lXB0pBbbw==/109951164471991113.jpg?imageView&thumbnail=500z500");
        params.put("picType", 1);
    
        // 3.生成签名信息
        String signature = SignatureUtils.genSignature(SECRETKEY, params);
        params.put("signature", signature);
    
        // 4.发送HTTP请求,这里使用的是HttpClient工具包,产品可自行选择自己熟悉的工具包发送请求
        String response = HttpClient4Utils.sendPost(httpClient, API_URL, params, Consts.UTF_8);
    
        // 5.解析接口返回值
        JsonObject jObject = new JsonParser().parse(response).getAsJsonObject();
        int code = jObject.get("code").getAsInt();
        String msg = jObject.get("msg").getAsString();
        if (code == 200) {
            JsonObject resultObject = jObject.getAsJsonObject("result");
            int status = resultObject.get("status").getAsInt();
            String taskId = resultObject.get("taskId").getAsString();
            int reasonType = resultObject.get("reasonType").getAsInt();
            if (status == 1) {
                System.out.println(String.format("taskId=%s,在线认证结果:通过", taskId));
            } else if (status == 2) {
                System.out.println(String.format("taskId=%s,在线认证结果:不通过, 原因:%s", taskId, reasonType));
            } else if (status == 0) {
                System.out.println(String.format("taskId=%s,在线认证结果:待定", taskId));
            }
        } else {
            System.out.println(String.format("ERROR: code=%s, msg=%s", code, msg));
        }
    }
    
    在线咨询 电话咨询:95163223 免费试用