人脸比对
接口描述
用户通过发送HTTP Post请求方式提交数据至公有云服务器,服务器识别并返回json格式的识别结果。
接口说明
请求URL:http://api.exocr.com/face/v1/compare
请求方式:HTTP Post
返回格式:json
Header
参数 | 值 |
---|---|
Content-Type | 使用二进制方式时,为multipart/form-data;使用base64和url方式时,为application/x-www-form-urlencoded |
请求参数
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
app_key | 是 | string | 请在控制台->我的应用中获取 |
app_secret | 是 | string | 请在控制台->我的应用中获取 |
face1_base64 | 否 | string | 人脸1图像base64编码。face1_base64、face1_url、face1_binary三个参数中至少选择一个,读取优先级从前到后依次降低。如:同时选择了以上三个参数,则以face1_base64图像为准。 |
face1_url | 否 | string | 人脸1图像url地址。face1_base64、face1_url、face1_binary三个参数中至少选择一个,读取优先级从前到后依次降低。如:同时选择了以上三个参数,则以face1_base64图像为准。 |
face1_binary | 否 | data | 人脸1图像二进制。face1_base64、face1_url、face1_binary三个参数中至少选择一个,读取优先级从前到后依次降低。如:同时选择了以上三个参数,则以face1_base64图像为准。 |
face2_base64 | 否 | string | 人脸2图像base64编码。face2_base64、face2_url、face2_binary三个参数中至少选择一个,读取优先级从前到后依次降低。如:同时选择了以上三个参数,则以face2_base64图像为准。 |
face2_url | 否 | string | 人脸2图像url地址。face2_base64、face2_url、face2_binary三个参数中至少选择一个,读取优先级从前到后依次降低。如:同时选择了以上三个参数,则以face2_base64图像为准。 |
face2_binary | 否 | data | 人脸2图像二进制。face2_base64、face2_url、face2_binary三个参数中至少选择一个,读取优先级从前到后依次降低。如:同时选择了以上三个参数,则以face2_base64图像为准。 |
注:face1图像与face2图像须保证相同格式,具体调用请参考调用示例。
调用示例
java(相关依赖库下载)
package com.exocr.httpclient;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import com.exocr.common.utils.HttpClientUtils;
public class Test {
public static void main(String[] args) throws FileNotFoundException {
/**
* base64
*/
//识别url
String url = " http://api.exocr.com/face/v1/compare";
//设置请求参数
Map<String, String> params = new HashMap<String, String>();
params.put("app_key", "#####");
params.put("app_secret", "#####");
//设置识别图像base64编码
params.put("face1_base64", "base64Image1Str");
params.put("face2_base64", "base64Image2Str");
//发送请求,得到识别结果
String result = HttpClientUtils.doPost(url, params);
System.*out*.println(result);
/**
* url
*/
//设置请求参数、识别图像url
params.put("app_key", "#####");
params.put("app_secret", "#####");
params.put("face1_url", "image1Url");
params.put("face2_url", "image2Url");
//发送请求,得到识别结果
result = HttpClientUtils.doPost(url, params);
System.*out*.println(result);
/**
* 二进制
*/
//设置请求参数
params.put("app_key", "#####");
params.put("app_secret", "#####");
//拿到本地图像,写入数据流
File file1 = new File("/Users/mac/logs/face1.png");
InputStream in1 = new FileInputStream(file1);
File file2 = new File("/Users/mac/logs/face2.png");
InputStream in2 = new FileInputStream(file2);
//设置数据流
Map<String, InputStream> streamMap = new HashMap<String, InputStream>();
streamMap.put("face1_binary", in1);
streamMap.put("face2_binary", in2);
//发送请求,得到识别结果
result = HttpClientUtils.doPostStream(url, params, streamMap);
//关闭io流
try {
in1.close();
in2.close();
} catch (IOException e) {
e.printStackTrace();
}
System.*out*.println(result);
}
}
返回示例
{
"result": {
"description": "可能性非常高",
"score": 100,
"thresholds": {
"1e-3": 60,
"1e-4": 77,
"1e-5": 83
},
"result_code": 0
},
"error_code": 0,
"description": "调用成功",
"request_id": "30BBBA93F64F453283EE6B69C4D2E310",
"recognize_time": 270,
"available_count": 9980
}
返回说明
通用参数
参数 | 类型 | 说明 |
---|---|---|
result | array | 返回结果数组,包括所有字段的识别信息 |
error_code | int | 错误码,返回0为正确,其他为错误 |
description | string | 识别结果描述 |
request_id | string | 请求唯一标识符 |
recognize_time | int | 识别所用时间,单位为毫秒 |
available_count | int | 识别剩余可用次数,次数不足时无法继续识别,可在控制台进行充值次数 |
人脸比对特有参数
参数 | 类型 | 说明 |
---|---|---|
description | string | 比对结果描述 |
score | int | 相似度,取值0~100(100为相似度100%) |
thresholds | array | 阈值数组,数组中的元素分别对应3个等级的阈值 |
result_code | int | 比对结果码,通过为0 |
1e-3 | int | 1e-3等级的阈值 |
1e-4 | int | 1e-4等级的阈值 |
1e-5 | int | 1e-5等级的阈值 |
1e-6 | int | 1e-6等级的阈值 |
1e-7 | int | 1e-7等级的阈值 |