人脸库管理系列接口
业务能力
本文档为人脸库管理系列接口的使用说明文档。
人脸库管理接口,主要用于配合人脸1:N搜搜及人脸M:N检索使用,要完成1:N搜索M:N搜索,首先需要构建一个人脸库,用于存放所有人脸特征,相关接口如下:
- 人脸注册:向人脸库中添加人脸
- 人脸更新:更新人脸库中指定用户下的人脸信息
- 人脸删除:删除指定用户的某张人脸
- 用户信息查询:查询人脸库中某个用户的详细信息
- 获取用户人脸列表:获取某个用户组中的全部人脸列表
- 获取用户列表:查询指定用户组中的用户列表
- 复制用户:将指定用户复制到另外的人脸组
- 删除用户:删除指定用户
- 创建用户组:创建一个新的用户组
- 删除用户组:删除指定用户组
- 组列表查询:查询人脸库中用户组的列表
人脸库结构
人脸库、用户组、用户、用户下的人脸层级关系如下所示:
1|- 人脸库(appid)
2 |- 用户组一(group_id)
3 |- 用户01(uid)
4 |- 人脸(faceid)
5 |- 用户02(uid)
6 |- 人脸(faceid)
7 |- 人脸(faceid)
8 ....
9 ....
10 |- 用户组二(group_id)
11 |- 用户组三(group_id)
12 ....
关于人脸库的设置限制
- 每个appid对应一个人脸库,且不同appid之间,人脸库互不相通。
- 每个人脸库下,可以创建多个用户组,用户组(group)数量没有限制。
- 每个用户组(group)下,可添加无限个user_id,无限张人脸(注:为了保证查询速度,单个group中的人脸容量上限建议为80万)。
- 每个用户(user_id)所能注册的最大人脸数量20。
提醒:每个人脸库对应一个appid,一定确保不要轻易删除后台应用列表中的appid,删除后则此人脸库将失效,无法进行任何查找!
质量判断
为了保证识别效果,请控制注册人脸的质量,在调用人脸注册接口时需要使用质量控制和活体控制参数,从而保证图片的质量以及注册进入人脸库的人脸是活体。
人脸注册
在线调试
您可以在 示例代码中心 中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。
请求说明
注意事项:
- 请求体格式化: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/faceset/user/add
URL参数:
参数 | 值 |
---|---|
access_token | 通过API Key和Secret Key获取的access_token,参考“Access Token获取” |
Header如下:
参数 | 值 |
---|---|
Content-Type | application/json |
Body中放置请求参数,参数详情如下:
请求参数
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
image | 是 | string | 图片信息(总数据大小应小于10M,分辨率应小于1920*1080),图片上传方式根据image_type来判断。 注:组内每个uid下的人脸图片数目上限为20张 |
image_type | 是 | string | 图片类型 BASE64:(推荐)图片的base64值,base64编码后的图片数据,编码后的图片大小不超过2M; FACE_TOKEN:人脸图片的唯一标识,调用人脸检测接口时,会为每个人脸图片赋予一个唯一的FACE_TOKEN,同一张图片多次检测得到的FACE_TOKEN是同一个。 |
group_id | 是 | string | 用户组id,标识一组用户(由数字、字母、下划线组成),长度限制48B。产品建议:根据您的业务需求,可以将需要注册的用户,按照业务划分,分配到不同的group下,例如按照会员手机尾号作为groupid,用于刷脸支付、会员计费消费等,这样可以尽可能控制每个group下的用户数与人脸数,提升检索的准确率 |
user_id | 是 | string | 用户id(由数字、字母、下划线组成),长度限制48B |
user_info | 否 | string | 用户资料,长度限制256B 默认空 |
quality_control | 否 | string | 图片质量控制 NONE: 不进行控制 LOW:较低的质量要求 NORMAL: 一般的质量要求 HIGH: 较高的质量要求 默认 NONE 若图片质量不满足要求,则返回结果中会提示质量检测失败 |
liveness_control | 否 | string | 活体检测控制 NONE: 不进行控制 LOW:较低的活体要求(高通过率 低攻击拒绝率) NORMAL: 一般的活体要求(平衡的攻击拒绝率, 通过率) HIGH: 较高的活体要求(高攻击拒绝率 低通过率) 默认NONE 若活体检测结果不满足要求,则返回结果中会提示活体检测失败 |
spoofing_control | 否 | string | 合成图控制 NONE: 不进行控制 LOW:较低的合成图阈值数值,由于合成图判定逻辑为大于阈值视为合成图攻击,该项代表低通过率、高攻击拒绝率 NORMAL: 一般的合成图阈值数值,由于合成图判定逻辑为大于阈值视为合成图攻击,该项代表平衡的攻击拒绝率, 通过率 HIGH: 较高的合成图阈值数值,由于合成图判定逻辑为大于阈值视为合成图攻击,该项代表高通过率、低攻击拒绝率) 默认为NONE |
action_type | 否 | string | 操作方式 APPEND: 当user_id在库中已经存在时,对此user_id重复注册时,新注册的图片默认会追加到该user_id下 REPLACE : 当对此user_id重复注册时,则会用新图替换库中该user_id下所有图片 默认使用APPEND |
face_sort_type | 否 | int | 人脸检测排序类型 0:代表检测出的人脸按照人脸面积从大到小排列 1:代表检测出的人脸按照距离图片中心从近到远排列 默认为0 |
说明:人脸注册完毕后,生效时间一般为5s以内,之后便可以进行人脸搜索或认证操作。
示例代码
提示一:使用示例代码前,请记得替换其中的示例Token、图片地址或Base64信息。
提示二:部分语言依赖的类或库,请在代码注释中查看下载地址。
1人脸注册
2curl -i -k 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/add?access_token=【调用鉴权接口获取的token】' --data '{"image":"027d8308a2ec665acb1bdf63e513bcb9","image_type":"FACE_TOKEN","group_id":"group_repeat","user_id":"user1","user_info":"abc","quality_control":"LOW","liveness_control":"NORMAL"}' -H 'Content-Type:application/json; charset=UTF-8'
1<?php
2/**
3 * 发起http post请求(REST API), 并获取REST请求的结果
4 * @param string $url
5 * @param string $param
6 * @return - http response body if succeeds, else false.
7 */
8function request_post($url = '', $param = '')
9{
10 if (empty($url) || empty($param)) {
11 return false;
12 }
13
14 $postUrl = $url;
15 $curlPost = $param;
16 // 初始化curl
17 $curl = curl_init();
18 curl_setopt($curl, CURLOPT_URL, $postUrl);
19 curl_setopt($curl, CURLOPT_HEADER, 0);
20 // 要求结果为字符串且输出到屏幕上
21 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
22 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
23 // post提交方式
24 curl_setopt($curl, CURLOPT_POST, 1);
25 curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
26 // 运行curl
27 $data = curl_exec($curl);
28 curl_close($curl);
29
30 return $data;
31}
32
33$token = '[调用鉴权接口获取的token]';
34$url = 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/add?access_token=' . $token;
35$bodys = "{\"image\":\"027d8308a2ec665acb1bdf63e513bcb9\",\"image_type\":\"FACE_TOKEN\",\"group_id\":\"group_repeat\",\"user_id\":\"user1\",\"user_info\":\"abc\",\"quality_control\":\"LOW\",\"liveness_control\":\"NORMAL\"}"
36$res = request_post($url, $bodys);
37
38var_dump($res);
1package com.baidu.ai.aip;
2
3import com.baidu.ai.aip.utils.HttpUtil;
4import com.baidu.ai.aip.utils.GsonUtils;
5
6import java.util.*;
7
8/**
9* 人脸注册
10*/
11public class FaceAdd {
12
13 /**
14 * 重要提示代码中所需工具类
15 * FileUtil,Base64Util,HttpUtil,GsonUtils请从
16 * https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72
17 * https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2
18 * https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3
19 * https://ai.baidu.com/file/470B3ACCA3FE43788B5A963BF0B625F3
20 * 下载
21 */
22 public static String add() {
23 // 请求url
24 String url = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/add";
25 try {
26 Map<String, Object> map = new HashMap<>();
27 map.put("image", "027d8308a2ec665acb1bdf63e513bcb9");
28 map.put("group_id", "group_repeat");
29 map.put("user_id", "user1");
30 map.put("user_info", "abc");
31 map.put("liveness_control", "NORMAL");
32 map.put("image_type", "FACE_TOKEN");
33 map.put("quality_control", "LOW");
34
35 String param = GsonUtils.toJson(map);
36
37 // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
38 String accessToken = "[调用鉴权接口获取的token]";
39
40 String result = HttpUtil.post(url, accessToken, "application/json", param);
41 System.out.println(result);
42 return result;
43 } catch (Exception e) {
44 e.printStackTrace();
45 }
46 return null;
47 }
48
49 public static void main(String[] args) {
50 FaceAdd.add();
51 }
52}
1# encoding:utf-8
2
3import requests
4
5'''
6人脸注册
7'''
8
9request_url = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/add"
10
11params = "{\"image\":\"027d8308a2ec665acb1bdf63e513bcb9\",\"image_type\":\"FACE_TOKEN\",\"group_id\":\"group_repeat\",\"user_id\":\"user1\",\"user_info\":\"abc\",\"quality_control\":\"LOW\",\"liveness_control\":\"NORMAL\"}"
12access_token = '[调用鉴权接口获取的token]'
13request_url = request_url + "?access_token=" + access_token
14headers = {'content-type': 'application/json'}
15response = requests.post(request_url, data=params, headers=headers)
16if response:
17 print (response.json())
1#include <iostream>
2#include <curl/curl.h>
3
4// libcurl库下载链接:https://curl.haxx.se/download.html
5// jsoncpp库下载链接:https://github.com/open-source-parsers/jsoncpp/
6const static std::string request_url = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/add";
7static std::string add_result;
8/**
9 * curl发送http请求调用的回调函数,回调函数中对返回的json格式的body进行了解析,解析结果储存在全局的静态变量当中
10 * @param 参数定义见libcurl文档
11 * @return 返回值定义见libcurl文档
12 */
13static size_t callback(void *ptr, size_t size, size_t nmemb, void *stream) {
14 // 获取到的body存放在ptr中,先将其转换为string格式
15 add_result = std::string((char *) ptr, size * nmemb);
16 return size * nmemb;
17}
18/**
19 * 人脸注册
20 * @return 调用成功返回0,发生错误返回其他错误码
21 */
22int add(std::string &json_result, const std::string &access_token) {
23 std::string url = request_url + "?access_token=" + access_token;
24 CURL *curl = NULL;
25 CURLcode result_code;
26 int is_success;
27 curl = curl_easy_init();
28 if (curl) {
29 curl_easy_setopt(curl, CURLOPT_URL, url.data());
30 curl_easy_setopt(curl, CURLOPT_POST, 1);
31 curl_slist *headers = NULL;
32 headers = curl_slist_append(headers, "Content-Type:application/json;charset=UTF-8");
33 curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
34 curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "{\"image\":\"027d8308a2ec665acb1bdf63e513bcb9\",\"image_type\":\"FACE_TOKEN\",\"group_id\":\"group_repeat\",\"user_id\":\"user1\",\"user_info\":\"abc\",\"quality_control\":\"LOW\",\"liveness_control\":\"NORMAL\"}");
35 result_code = curl_easy_perform(curl);
36 if (result_code != CURLE_OK) {
37 fprintf(stderr, "curl_easy_perform() failed: %s\n",
38 curl_easy_strerror(result_code));
39 is_success = 1;
40 return is_success;
41 }
42 json_result = add_result;
43 curl_easy_cleanup(curl);
44 is_success = 0;
45 } else {
46 fprintf(stderr, "curl_easy_init() failed.");
47 is_success = 1;
48 }
49 return is_success;
50}
1using System;
2using System.IO;
3using System.Net;
4using System.Text;
5using System.Web;
6
7namespace com.baidu.ai
8{
9 public class FaceAdd
10 {
11 // 人脸注册
12 public static string add()
13 {
14 string token = "[调用鉴权接口获取的token]";
15 string host = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/add?access_token=" + token;
16 Encoding encoding = Encoding.Default;
17 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host);
18 request.Method = "post";
19 request.KeepAlive = true;
20 String str = "{\"image\":\"027d8308a2ec665acb1bdf63e513bcb9\",\"image_type\":\"FACE_TOKEN\",\"group_id\":\"group_repeat\",\"user_id\":\"user1\",\"user_info\":\"abc\",\"quality_control\":\"LOW\",\"liveness_control\":\"NORMAL\"}";
21 byte[] buffer = encoding.GetBytes(str);
22 request.ContentLength = buffer.Length;
23 request.GetRequestStream().Write(buffer, 0, buffer.Length);
24 HttpWebResponse response = (HttpWebResponse)request.GetResponse();
25 StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);
26 string result = reader.ReadToEnd();
27 Console.WriteLine("人脸注册:");
28 Console.WriteLine(result);
29 return result;
30 }
31 }
32}
返回说明
返回参数
字段 | 必选 | 类型 | 说明 |
---|---|---|---|
log_id | 是 | uint64 | 请求标识码,随机数,唯一 |
face_token | 是 | string | 人脸图片的唯一标识(有效期永久) |
location | 是 | array | 人脸在图片中的位置 |
+left | 是 | double | 人脸区域离左边界的距离 |
+top | 是 | double | 人脸区域离上边界的距离 |
+width | 是 | double | 人脸区域的宽度 |
+height | 是 | double | 人脸区域的高度 |
+rotation | 是 | int64 | 人脸框相对于竖直方向的顺时针旋转角,[-180,180] |
返回示例
1{
2 "face_token": "2fa64a88a9d5118916f9a303782a97d3",
3 "location": {
4 "left": 117,
5 "top": 131,
6 "width": 172,
7 "height": 170,
8 "rotation": 4
9 }
10}
- 质量控制参数说明
不同的控制度下所对应的质量控制阈值,如果检测出来的质量信息某一项不符合控制阈值的要求,则会返回错误信息。
遮挡情况的阈值
控制度 | left_eye | right_eye | nose | mouth | left_cheek | right_cheek | chin_contour |
---|---|---|---|---|---|---|---|
LOW | 0.8 | 0.8 | 0.8 | 0.8 | 0.8 | 0.8 | 0.8 |
NORMAL | 0.6 | 0.6 | 0.6 | 0.6 | 0.6 | 0.6 | 0.6 |
HIGH | 0.2 | 0.2 | 0.2 | 0.2 | 0.2 | 0.2 | 0.2 |
模糊度、完整度的阈值
控制度 | illumination | blurdegree | completeness |
---|---|---|---|
LOW | 20 | 0.8 | 0 |
NORMAL | 40 | 0.6 | 0 |
HIGH | 100 | 0.2 | 1 |
活体控制参数说明
不同的控制度下所对应的活体控制阈值不同,如果检测出来的活体分数小于控制阈值,则会返回错误信息。
控制度 | 阈值 | 说明 |
---|---|---|
LOW | 0.05 | 活体误拒率:万分之一;拒绝率:97.75% |
NORMAL | 0.3 | 活体误拒率:千分之一;拒绝率:98.82% |
HIGH | 0.9 | 活体误拒率:百分之一;拒绝率:99.77% |
1、误拒率: 把真人识别为假人的概率. 阈值越高,安全性越高, 要求也就越高, 对应的误识率就越高 2、通过率=1-误拒率
关于以上数值的概念介绍:
拒绝率(TRR):如99%,代表100次作弊假体攻击,会有99次被拒绝。 误拒率(FRR):如0.5%,指1000次真人请求,会有5次因为活体分数低于阈值被错误拒绝。 通过率(TAR):如99%,指100次真人请求,会有99次因为活体分数高于阈值而通过。 阈值(Threshold):高于此数值,则可判断为活体。
合成图控制参数说明
不同的控制度下所对应的合成图检测(PS、人脸融合等)阈值,如果检测出来的分数大于控制阈值,则会返回错误信息。
控制度 | 阈值 | 误拒率(FRR) | 通过率 | 攻击拒绝率(TRR)) |
---|---|---|---|---|
LOW | 0.00023 | 5% | 95% | 94.93% |
NORMAL(推荐) | 0.00048 | 1% | 99% | 89.71% |
HIGH | 0.00109 | 0.1% | 99.9% | 84.57% |
1、误拒率:把正常图片识别为合成图片的概率。阈值越低,安全性越高,要求也就越高,对应的误识率就越高。 2、通过率=1-误拒率
关于以上数值的概念介绍:
阈值(Threshold):高于此数值,则可判断为是合成图攻击。
人脸更新
接口描述
用于对人脸库中指定用户,更新其下的人脸图像。
说明:针对一个user_id执行更新操作,新上传的人脸图像将覆盖此user_id原有所有图像。
在线调试
您可以在示例代码中心中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。
请求说明
注意事项:
- 请求体格式化: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/faceset/user/update
URL参数:
参数 | 值 |
---|---|
access_token | 通过API Key和Secret Key获取的access_token,参考“Access Token获取” |
Header如下:
参数 | 值 |
---|---|
Content-Type | application/json |
Body中放置请求参数,参数详情如下:
请求参数
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
image | 是 | string | 图片信息(总数据大小应小于10M,分辨率应小于1920*1080),图片上传方式根据image_type来判断 |
image_type | 是 | string | 图片类型 BASE64:(推荐)图片的base64值,base64编码后的图片数据,编码后的图片大小不超过2M; FACE_TOKEN: 人脸图片的唯一标识 |
group_id | 是 | string | 用户组id,标识一组用户(由数字、字母、下划线组成),长度限制48B |
user_id | 是 | string | 用户id(由数字、字母、下划线组成),长度限制48B |
user_info | 否 | string | 用户资料,长度限制48B 默认空 |
quality_control | 否 | string | 图片质量控制 NONE: 不进行控制 LOW:较低的质量要求 NORMAL: 一般的质量要求 HIGH: 较高的质量要求 默认 NONE 若图片质量不满足要求,则返回结果中会提示质量检测失败 |
liveness_control | 否 | string | 活体检测控制 NONE: 不进行控制 LOW:较低的活体要求(高通过率 低攻击拒绝率) NORMAL: 一般的活体要求(平衡的攻击拒绝率, 通过率) HIGH: 较高的活体要求(高攻击拒绝率 低通过率) 默认NONE 若活体检测结果不满足要求,则返回结果中会提示活体检测失败 |
spoofing_control | 否 | string | 合成图控制 NONE: 不进行控制 LOW:较低的合成图阈值数值,由于合成图判定逻辑为大于阈值视为合成图攻击,该项代表低通过率、高攻击拒绝率 NORMAL: 一般的合成图阈值数值,由于合成图判定逻辑为大于阈值视为合成图攻击,该项代表平衡的攻击拒绝率, 通过率 HIGH: 较高的合成图阈值数值,由于合成图判定逻辑为大于阈值视为合成图攻击,该项代表高通过率、低攻击拒绝率) 默认为NONE |
action_type | 否 | string | 操作方式 UPDATE: 会使用新图替换库中该user_id下所有图片, 若user_id不存在则会报错 REPLACE : 当user_id不存在时, 则会注册这个user_id的用户 默认使用UPDATE |
示例代码
提示一:使用示例代码前,请记得替换其中的示例Token、图片地址或Base64信息。
提示二:部分语言依赖的类或库,请在代码注释中查看下载地址。
1人脸更新
2curl -i -k 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/update?access_token=【调用鉴权接口获取的token】' --data '{"image":"027d8308a2ec665acb1bdf63e513bcb9","image_type":"FACE_TOKEN","group_id":"group_repeat","user_id":"user1","user_info":"cba","quality_control":"LOW","liveness_control":"NORMAL"}' -H 'Content-Type:application/json; charset=UTF-8'
1<?php
2/**
3 * 发起http post请求(REST API), 并获取REST请求的结果
4 * @param string $url
5 * @param string $param
6 * @return - http response body if succeeds, else false.
7 */
8function request_post($url = '', $param = '')
9{
10 if (empty($url) || empty($param)) {
11 return false;
12 }
13
14 $postUrl = $url;
15 $curlPost = $param;
16 // 初始化curl
17 $curl = curl_init();
18 curl_setopt($curl, CURLOPT_URL, $postUrl);
19 curl_setopt($curl, CURLOPT_HEADER, 0);
20 // 要求结果为字符串且输出到屏幕上
21 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
22 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
23 // post提交方式
24 curl_setopt($curl, CURLOPT_POST, 1);
25 curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
26 // 运行curl
27 $data = curl_exec($curl);
28 curl_close($curl);
29
30 return $data;
31}
32
33$token = '[调用鉴权接口获取的token]';
34$url = 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/update?access_token=' . $token;
35$bodys = "{\"image\":\"027d8308a2ec665acb1bdf63e513bcb9\",\"image_type\":\"FACE_TOKEN\",\"group_id\":\"group_repeat\",\"user_id\":\"user1\",\"user_info\":\"cba\",\"quality_control\":\"LOW\",\"liveness_control\":\"NORMAL\"}"
36$res = request_post($url, $bodys);
37
38var_dump($res);
1package com.baidu.ai.aip;
2
3import com.baidu.ai.aip.utils.HttpUtil;
4import com.baidu.ai.aip.utils.GsonUtils;
5
6import java.util.*;
7
8/**
9* 人脸更新
10*/
11public class FaceUpdate {
12
13 /**
14 * 重要提示代码中所需工具类
15 * FileUtil,Base64Util,HttpUtil,GsonUtils请从
16 * https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72
17 * https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2
18 * https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3
19 * https://ai.baidu.com/file/470B3ACCA3FE43788B5A963BF0B625F3
20 * 下载
21 */
22 public static String faceUpdate() {
23 // 请求url
24 String url = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/update";
25 try {
26 Map<String, Object> map = new HashMap<>();
27 map.put("image", "027d8308a2ec665acb1bdf63e513bcb9");
28 map.put("group_id", "group_repeat");
29 map.put("user_id", "user1");
30 map.put("user_info", "cba");
31 map.put("liveness_control", "NORMAL");
32 map.put("image_type", "FACE_TOKEN");
33 map.put("quality_control", "LOW");
34
35 String param = GsonUtils.toJson(map);
36
37 // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
38 String accessToken = "[调用鉴权接口获取的token]";
39
40 String result = HttpUtil.post(url, accessToken, "application/json", param);
41 System.out.println(result);
42 return result;
43 } catch (Exception e) {
44 e.printStackTrace();
45 }
46 return null;
47 }
48
49 public static void main(String[] args) {
50 FaceUpdate.faceUpdate();
51 }
52}
1# encoding:utf-8
2
3import requests
4
5'''
6人脸更新
7'''
8
9request_url = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/update"
10
11params = "{\"image\":\"027d8308a2ec665acb1bdf63e513bcb9\",\"image_type\":\"FACE_TOKEN\",\"group_id\":\"group_repeat\",\"user_id\":\"user1\",\"user_info\":\"cba\",\"quality_control\":\"LOW\",\"liveness_control\":\"NORMAL\"}"
12access_token = '[调用鉴权接口获取的token]'
13request_url = request_url + "?access_token=" + access_token
14headers = {'content-type': 'application/json'}
15response = requests.post(request_url, data=params, headers=headers)
16if response:
17 print (response.json())
1#include <iostream>
2#include <curl/curl.h>
3
4// libcurl库下载链接:https://curl.haxx.se/download.html
5// jsoncpp库下载链接:https://github.com/open-source-parsers/jsoncpp/
6const static std::string request_url = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/update";
7static std::string faceUpdate_result;
8/**
9 * curl发送http请求调用的回调函数,回调函数中对返回的json格式的body进行了解析,解析结果储存在全局的静态变量当中
10 * @param 参数定义见libcurl文档
11 * @return 返回值定义见libcurl文档
12 */
13static size_t callback(void *ptr, size_t size, size_t nmemb, void *stream) {
14 // 获取到的body存放在ptr中,先将其转换为string格式
15 faceUpdate_result = std::string((char *) ptr, size * nmemb);
16 return size * nmemb;
17}
18/**
19 * 人脸更新
20 * @return 调用成功返回0,发生错误返回其他错误码
21 */
22int faceUpdate(std::string &json_result, const std::string &access_token) {
23 std::string url = request_url + "?access_token=" + access_token;
24 CURL *curl = NULL;
25 CURLcode result_code;
26 int is_success;
27 curl = curl_easy_init();
28 if (curl) {
29 curl_easy_setopt(curl, CURLOPT_URL, url.data());
30 curl_easy_setopt(curl, CURLOPT_POST, 1);
31 curl_slist *headers = NULL;
32 headers = curl_slist_append(headers, "Content-Type:application/json;charset=UTF-8");
33 curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
34 curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "{\"image\":\"027d8308a2ec665acb1bdf63e513bcb9\",\"image_type\":\"FACE_TOKEN\",\"group_id\":\"group_repeat\",\"user_id\":\"user1\",\"user_info\":\"cba\",\"quality_control\":\"LOW\",\"liveness_control\":\"NORMAL\"}");
35 result_code = curl_easy_perform(curl);
36 if (result_code != CURLE_OK) {
37 fprintf(stderr, "curl_easy_perform() failed: %s\n",
38 curl_easy_strerror(result_code));
39 is_success = 1;
40 return is_success;
41 }
42 json_result = faceUpdate_result;
43 curl_easy_cleanup(curl);
44 is_success = 0;
45 } else {
46 fprintf(stderr, "curl_easy_init() failed.");
47 is_success = 1;
48 }
49 return is_success;
50}
1using System;
2using System.IO;
3using System.Net;
4using System.Text;
5using System.Web;
6
7namespace com.baidu.ai
8{
9 public class FaceUpdate
10 {
11 // 人脸更新
12 public static string faceUpdate()
13 {
14 string token = "[调用鉴权接口获取的token]";
15 string host = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/update?access_token=" + token;
16 Encoding encoding = Encoding.Default;
17 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host);
18 request.Method = "post";
19 request.KeepAlive = true;
20 String str = "{\"image\":\"027d8308a2ec665acb1bdf63e513bcb9\",\"image_type\":\"FACE_TOKEN\",\"group_id\":\"group_repeat\",\"user_id\":\"user1\",\"user_info\":\"cba\",\"quality_control\":\"LOW\",\"liveness_control\":\"NORMAL\"}";
21 byte[] buffer = encoding.GetBytes(str);
22 request.ContentLength = buffer.Length;
23 request.GetRequestStream().Write(buffer, 0, buffer.Length);
24 HttpWebResponse response = (HttpWebResponse)request.GetResponse();
25 StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);
26 string result = reader.ReadToEnd();
27 Console.WriteLine("人脸更新:");
28 Console.WriteLine(result);
29 return result;
30 }
31 }
32}
返回说明
返回参数
字段 | 必选 | 类型 | 说明 |
---|---|---|---|
log_id | 是 | uint64 | 请求标识码,随机数,唯一 |
face_token | 是 | string | 人脸图片的唯一标识(有效期永久) |
location | 是 | array | 人脸在图片中的位置 |
+left | 是 | double | 人脸区域离左边界的距离 |
+top | 是 | double | 人脸区域离上边界的距离 |
+width | 是 | double | 人脸区域的宽度 |
+height | 是 | double | 人脸区域的高度 |
+rotation | 是 | int64 | 人脸框相对于竖直方向的顺时针旋转角,[-180,180] |
返回示例
1{
2 "face_token": "2fa64a88a9d5118916f9a303782a97d3",
3 "location": {
4 "left": 117,
5 "top": 131,
6 "width": 172,
7 "height": 170,
8 "rotation": 4
9 }
10}
- 质量控制参数说明
不同的控制度下所对应的质量控制阈值,如果检测出来的质量信息某一项不符合控制阈值的要求,则会返回错误信息。
遮挡情况的阈值
控制度 | left_eye | right_eye | nose | mouth | left_cheek | right_cheek | chin_contour |
---|---|---|---|---|---|---|---|
LOW | 0.8 | 0.8 | 0.8 | 0.8 | 0.8 | 0.8 | 0.8 |
NORMAL | 0.6 | 0.6 | 0.6 | 0.6 | 0.6 | 0.6 | 0.6 |
HIGH | 0.2 | 0.2 | 0.2 | 0.2 | 0.2 | 0.2 | 0.2 |
模糊度、完整度的阈值
控制度 | illumination | blurdegree | completeness |
---|---|---|---|
LOW | 20 | 0.8 | 0 |
NORMAL | 40 | 0.6 | 0 |
HIGH | 100 | 0.2 | 1 |
活体控制参数说明
不同的控制度下所对应的活体控制阈值不同,如果检测出来的活体分数小于控制阈值,则会返回错误信息。
控制度 | 阈值 | 说明 |
---|---|---|
LOW | 0.05 | 活体误拒率:万分之一;拒绝率:97.75% |
NORMAL | 0.3 | 活体误拒率:千分之一;拒绝率:98.82% |
HIGH | 0.9 | 活体误拒率:百分之一;拒绝率:99.77% |
1、误拒率: 把真人识别为假人的概率. 阈值越高,安全性越高, 要求也就越高, 对应的误识率就越高 2、通过率=1-误拒率
关于以上数值的概念介绍:
拒绝率(TRR):如99%,代表100次作弊假体攻击,会有99次被拒绝。 误拒率(FRR):如0.5%,指1000次真人请求,会有5次因为活体分数低于阈值被错误拒绝。 通过率(TAR):如99%,指100次真人请求,会有99次因为活体分数高于阈值而通过。 阈值(Threshold):高于此数值,则可判断为活体。
合成图控制参数说明
不同的控制度下所对应的合成图检测(PS、人脸融合等)阈值,如果检测出来的分数大于控制阈值,则会返回错误信息。
控制度 | 阈值 | 误拒率(FRR) | 通过率 | 攻击拒绝率(TRR)) |
---|---|---|---|---|
LOW | 0.00023 | 5% | 95% | 94.93% |
NORMAL(推荐) | 0.00048 | 1% | 99% | 89.71% |
HIGH | 0.00109 | 0.1% | 99.9% | 84.57% |
1、误拒率:把正常图片识别为合成图片的概率。阈值越低,安全性越高,要求也就越高,对应的误识率就越高。 2、通过率=1-误拒率
关于以上数值的概念介绍:
阈值(Threshold):高于此数值,则可判断为是合成图攻击。
人脸删除
接口描述
删除用户的某一张人脸,如果该用户只有一张人脸图片,则同时删除用户。
在线调试
您可以在示例代码中心中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。
请求说明
请求示例
HTTP方法:POST
请求URL: https://aip.baidubce.com/rest/2.0/face/v3/faceset/face/delete
URL参数:
参数 | 值 |
---|---|
access_token | 通过API Key和Secret Key获取的access_token,参考“Access Token获取” |
Header如下:
参数 | 值 |
---|---|
Content-Type | application/json |
Body中放置请求参数,参数详情如下:
请求参数
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
log_id | 是 | uint64 | 请求标识码,随机数,唯一 |
user_id | 是 | string | 用户id(由数字、字母、下划线组成),长度限制48B |
group_id | 是 | string | 用户组id(由数字、字母、下划线组成) 长度限制48B,删除指定group_id中的user_id信息 |
face_token | 是 | string | 需要删除的人脸图片token,(由数字、字母、下划线组成)长度限制64B |
返回说明
通过返回的error_code判断是否成功 如失败则查看error_msg获得具体错误信息
返回示例
1// 删除成功
2{
3 "error_code": 0,
4 "log_id": 73473737,
5}
6// 删除发生错误
7{
8 "error_code": 223106,
9 "log_id": 1382953199,
10 "error_msg": "face is not exist"
11}
用户信息查询
接口描述
获取人脸库中某个用户的信息(user_info信息和用户所属的组)。
在线调试
您可以在示例代码中心中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。
请求说明
请求示例
HTTP方法:POST
请求URL: https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/get
URL参数:
参数 | 值 |
---|---|
access_token | 通过API Key和Secret Key获取的access_token,参考“Access Token获取” |
Header如下:
参数 | 值 |
---|---|
Content-Type | application/json |
Body中放置请求参数,参数详情如下:
请求参数
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
user_id | 是 | string | 用户id(由数字、字母、下划线组成),长度限制48B |
group_id | 是 | string | 用户组id(由数字、字母、下划线组成,长度限制48B),如传入“@ALL”则从所有组中查询用户信息。注:处于不同组,但uid相同的用户,我们认为是同一个用户。 |
示例代码
提示一:使用示例代码前,请记得替换其中的示例Token、图片地址或Base64信息。
提示二:部分语言依赖的类或库,请在代码注释中查看下载地址。
1用户信息查询
2curl -i -k 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/get?access_token=【调用鉴权接口获取的token】' --data '{"user_id":"user1","group_id":"group1"}' -H 'Content-Type:application/json; charset=UTF-8'
1<?php
2/**
3 * 发起http post请求(REST API), 并获取REST请求的结果
4 * @param string $url
5 * @param string $param
6 * @return - http response body if succeeds, else false.
7 */
8function request_post($url = '', $param = '')
9{
10 if (empty($url) || empty($param)) {
11 return false;
12 }
13
14 $postUrl = $url;
15 $curlPost = $param;
16 // 初始化curl
17 $curl = curl_init();
18 curl_setopt($curl, CURLOPT_URL, $postUrl);
19 curl_setopt($curl, CURLOPT_HEADER, 0);
20 // 要求结果为字符串且输出到屏幕上
21 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
22 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
23 // post提交方式
24 curl_setopt($curl, CURLOPT_POST, 1);
25 curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
26 // 运行curl
27 $data = curl_exec($curl);
28 curl_close($curl);
29
30 return $data;
31}
32
33$token = '[调用鉴权接口获取的token]';
34$url = 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/get?access_token=' . $token;
35$bodys = "{\"user_id\":\"user1\",\"group_id\":\"group1\"}"
36$res = request_post($url, $bodys);
37
38var_dump($res);
1package com.baidu.ai.aip;
2
3import com.baidu.ai.aip.utils.HttpUtil;
4import com.baidu.ai.aip.utils.GsonUtils;
5
6import java.util.*;
7
8/**
9* 用户信息查询
10*/
11public class UserGet {
12
13 /**
14 * 重要提示代码中所需工具类
15 * FileUtil,Base64Util,HttpUtil,GsonUtils请从
16 * https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72
17 * https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2
18 * https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3
19 * https://ai.baidu.com/file/470B3ACCA3FE43788B5A963BF0B625F3
20 * 下载
21 */
22 public static String userGet() {
23 // 请求url
24 String url = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/get";
25 try {
26 Map<String, Object> map = new HashMap<>();
27 map.put("user_id", "user1");
28 map.put("group_id", "group1");
29
30 String param = GsonUtils.toJson(map);
31
32 // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
33 String accessToken = "[调用鉴权接口获取的token]";
34
35 String result = HttpUtil.post(url, accessToken, "application/json", param);
36 System.out.println(result);
37 return result;
38 } catch (Exception e) {
39 e.printStackTrace();
40 }
41 return null;
42 }
43
44 public static void main(String[] args) {
45 UserGet.userGet();
46 }
47}
1# encoding:utf-8
2
3import requests
4
5'''
6用户信息查询
7'''
8
9request_url = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/get"
10
11params = "{\"user_id\":\"user1\",\"group_id\":\"group1\"}"
12access_token = '[调用鉴权接口获取的token]'
13request_url = request_url + "?access_token=" + access_token
14headers = {'content-type': 'application/json'}
15response = requests.post(request_url, data=params, headers=headers)
16if response:
17 print (response.json())
1#include <iostream>
2#include <curl/curl.h>
3
4// libcurl库下载链接:https://curl.haxx.se/download.html
5// jsoncpp库下载链接:https://github.com/open-source-parsers/jsoncpp/
6const static std::string request_url = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/get";
7static std::string userGet_result;
8/**
9 * curl发送http请求调用的回调函数,回调函数中对返回的json格式的body进行了解析,解析结果储存在全局的静态变量当中
10 * @param 参数定义见libcurl文档
11 * @return 返回值定义见libcurl文档
12 */
13static size_t callback(void *ptr, size_t size, size_t nmemb, void *stream) {
14 // 获取到的body存放在ptr中,先将其转换为string格式
15 userGet_result = std::string((char *) ptr, size * nmemb);
16 return size * nmemb;
17}
18/**
19 * 用户信息查询
20 * @return 调用成功返回0,发生错误返回其他错误码
21 */
22int userGet(std::string &json_result, const std::string &access_token) {
23 std::string url = request_url + "?access_token=" + access_token;
24 CURL *curl = NULL;
25 CURLcode result_code;
26 int is_success;
27 curl = curl_easy_init();
28 if (curl) {
29 curl_easy_setopt(curl, CURLOPT_URL, url.data());
30 curl_easy_setopt(curl, CURLOPT_POST, 1);
31 curl_slist *headers = NULL;
32 headers = curl_slist_append(headers, "Content-Type:application/json;charset=UTF-8");
33 curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
34 curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "{\"user_id\":\"user1\",\"group_id\":\"group1\"}");
35 result_code = curl_easy_perform(curl);
36 if (result_code != CURLE_OK) {
37 fprintf(stderr, "curl_easy_perform() failed: %s\n",
38 curl_easy_strerror(result_code));
39 is_success = 1;
40 return is_success;
41 }
42 json_result = userGet_result;
43 curl_easy_cleanup(curl);
44 is_success = 0;
45 } else {
46 fprintf(stderr, "curl_easy_init() failed.");
47 is_success = 1;
48 }
49 return is_success;
50}
1using System;
2using System.IO;
3using System.Net;
4using System.Text;
5using System.Web;
6
7namespace com.baidu.ai
8{
9 public class UserGet
10 {
11 // 用户信息查询
12 public static string userGet()
13 {
14 string token = "[调用鉴权接口获取的token]";
15 string host = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/get?access_token=" + token;
16 Encoding encoding = Encoding.Default;
17 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host);
18 request.Method = "post";
19 request.KeepAlive = true;
20 String str = "{\"user_id\":\"user1\",\"group_id\":\"group1\"}";
21 byte[] buffer = encoding.GetBytes(str);
22 request.ContentLength = buffer.Length;
23 request.GetRequestStream().Write(buffer, 0, buffer.Length);
24 HttpWebResponse response = (HttpWebResponse)request.GetResponse();
25 StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);
26 string result = reader.ReadToEnd();
27 Console.WriteLine("用户信息查询:");
28 Console.WriteLine(result);
29 return result;
30 }
31 }
32}
返回说明
返回参数
字段 | 必选 | 类型 | 说明 |
---|---|---|---|
log_id | 是 | uint64 | 请求标识码,随机数,唯一 |
user_list | 是 | array | 查询到的用户列表 |
+user_info | 是 | string | 用户资料,被查询用户的资料 |
+group_id | 是 | string | 用户组id,被查询用户的所在组 |
返回示例
1{
2 "user_list": [
3 {
4 "user_info": "user info ...",
5 "group_id": "gid1"
6 },
7 {
8 "user_info": "user info2 ...",
9 "group_id": "gid2"
10 }
11 ]
12}
获取用户人脸列表
接口描述
用于获取一个用户的全部人脸列表。
在线调试
您可以在示例代码中心中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。
请求说明
请求示例
HTTP方法:POST
请求URL: https://aip.baidubce.com/rest/2.0/face/v3/faceset/face/getlist
URL参数:
参数 | 值 |
---|---|
access_token | 通过API Key和Secret Key获取的access_token,参考“Access Token获取” |
Header如下:
参数 | 值 |
---|---|
Content-Type | application/json |
Body中放置请求参数,参数详情如下:
请求参数
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
user_id | 是 | string | 用户id(由数字、字母、下划线组成),长度限制48B |
group_id | 是 | string | 用户组id (由数字、字母、下划线组成),长度限制48B |
示例代码
提示一:使用示例代码前,请记得替换其中的示例Token、图片地址或Base64信息。
提示二:部分语言依赖的类或库,请在代码注释中查看下载地址。
1获取用户人脸列表
2curl -i -k 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/face/getlist?access_token=【调用鉴权接口获取的token】' --data '{"user_id":"user1","group_id":"group1"}' -H 'Content-Type:application/json; charset=UTF-8'
1<?php
2/**
3 * 发起http post请求(REST API), 并获取REST请求的结果
4 * @param string $url
5 * @param string $param
6 * @return - http response body if succeeds, else false.
7 */
8function request_post($url = '', $param = '')
9{
10 if (empty($url) || empty($param)) {
11 return false;
12 }
13
14 $postUrl = $url;
15 $curlPost = $param;
16 // 初始化curl
17 $curl = curl_init();
18 curl_setopt($curl, CURLOPT_URL, $postUrl);
19 curl_setopt($curl, CURLOPT_HEADER, 0);
20 // 要求结果为字符串且输出到屏幕上
21 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
22 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
23 // post提交方式
24 curl_setopt($curl, CURLOPT_POST, 1);
25 curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
26 // 运行curl
27 $data = curl_exec($curl);
28 curl_close($curl);
29
30 return $data;
31}
32
33$token = '[调用鉴权接口获取的token]';
34$url = 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/face/getlist?access_token=' . $token;
35$bodys = "{\"user_id\":\"user1\",\"group_id\":\"group1\"}"
36$res = request_post($url, $bodys);
37
38var_dump($res);
1package com.baidu.ai.aip;
2
3import com.baidu.ai.aip.utils.HttpUtil;
4import com.baidu.ai.aip.utils.GsonUtils;
5
6import java.util.*;
7
8/**
9* 获取用户人脸列表
10*/
11public class FaceGetList {
12
13 /**
14 * 重要提示代码中所需工具类
15 * FileUtil,Base64Util,HttpUtil,GsonUtils请从
16 * https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72
17 * https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2
18 * https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3
19 * https://ai.baidu.com/file/470B3ACCA3FE43788B5A963BF0B625F3
20 * 下载
21 */
22 public static String faceGetList() {
23 // 请求url
24 String url = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/face/getlist";
25 try {
26 Map<String, Object> map = new HashMap<>();
27 map.put("user_id", "user1");
28 map.put("group_id", "group1");
29
30 String param = GsonUtils.toJson(map);
31
32 // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
33 String accessToken = "[调用鉴权接口获取的token]";
34
35 String result = HttpUtil.post(url, accessToken, "application/json", param);
36 System.out.println(result);
37 return result;
38 } catch (Exception e) {
39 e.printStackTrace();
40 }
41 return null;
42 }
43
44 public static void main(String[] args) {
45 FaceGetList.faceGetList();
46 }
47}
1# encoding:utf-8
2
3import requests
4
5'''
6获取用户人脸列表
7'''
8
9request_url = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/face/getlist"
10
11params = "{\"user_id\":\"user1\",\"group_id\":\"group1\"}"
12access_token = '[调用鉴权接口获取的token]'
13request_url = request_url + "?access_token=" + access_token
14headers = {'content-type': 'application/json'}
15response = requests.post(request_url, data=params, headers=headers)
16if response:
17 print (response.json())
1#include <iostream>
2#include <curl/curl.h>
3
4// libcurl库下载链接:https://curl.haxx.se/download.html
5// jsoncpp库下载链接:https://github.com/open-source-parsers/jsoncpp/
6const static std::string request_url = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/face/getlist";
7static std::string faceGetList_result;
8/**
9 * curl发送http请求调用的回调函数,回调函数中对返回的json格式的body进行了解析,解析结果储存在全局的静态变量当中
10 * @param 参数定义见libcurl文档
11 * @return 返回值定义见libcurl文档
12 */
13static size_t callback(void *ptr, size_t size, size_t nmemb, void *stream) {
14 // 获取到的body存放在ptr中,先将其转换为string格式
15 faceGetList_result = std::string((char *) ptr, size * nmemb);
16 return size * nmemb;
17}
18/**
19 * 获取用户人脸列表
20 * @return 调用成功返回0,发生错误返回其他错误码
21 */
22int faceGetList(std::string &json_result, const std::string &access_token) {
23 std::string url = request_url + "?access_token=" + access_token;
24 CURL *curl = NULL;
25 CURLcode result_code;
26 int is_success;
27 curl = curl_easy_init();
28 if (curl) {
29 curl_easy_setopt(curl, CURLOPT_URL, url.data());
30 curl_easy_setopt(curl, CURLOPT_POST, 1);
31 curl_slist *headers = NULL;
32 headers = curl_slist_append(headers, "Content-Type:application/json;charset=UTF-8");
33 curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
34 curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "{\"user_id\":\"user1\",\"group_id\":\"group1\"}");
35 result_code = curl_easy_perform(curl);
36 if (result_code != CURLE_OK) {
37 fprintf(stderr, "curl_easy_perform() failed: %s\n",
38 curl_easy_strerror(result_code));
39 is_success = 1;
40 return is_success;
41 }
42 json_result = faceGetList_result;
43 curl_easy_cleanup(curl);
44 is_success = 0;
45 } else {
46 fprintf(stderr, "curl_easy_init() failed.");
47 is_success = 1;
48 }
49 return is_success;
50}
1using System;
2using System.IO;
3using System.Net;
4using System.Text;
5using System.Web;
6
7namespace com.baidu.ai
8{
9 public class FaceGetList
10 {
11 // 获取用户人脸列表
12 public static string faceGetList()
13 {
14 string token = "[调用鉴权接口获取的token]";
15 string host = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/face/getlist?access_token=" + token;
16 Encoding encoding = Encoding.Default;
17 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host);
18 request.Method = "post";
19 request.KeepAlive = true;
20 String str = "{\"user_id\":\"user1\",\"group_id\":\"group1\"}";
21 byte[] buffer = encoding.GetBytes(str);
22 request.ContentLength = buffer.Length;
23 request.GetRequestStream().Write(buffer, 0, buffer.Length);
24 HttpWebResponse response = (HttpWebResponse)request.GetResponse();
25 StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);
26 string result = reader.ReadToEnd();
27 Console.WriteLine("获取用户人脸列表:");
28 Console.WriteLine(result);
29 return result;
30 }
31 }
32}
返回说明
返回参数
字段 | 必选 | 类型 | 说明 |
---|---|---|---|
log_id | 是 | uint64 | 请求标识码,随机数,唯一 |
face_list | 是 | array | 人脸列表 |
+ face_token | 是 | string | 人脸图片的唯一标识(有效期永久) |
+ctime | 是 | string | 人脸创建时间 |
返回示例
1{
2 "face_list": [
3 {
4 "face_token": "fid1",
5 "ctime": "2018-01-01 00:00:00"
6 },
7 {
8 "face_token": "fid2",
9 "ctime": "2018-01-01 10:00:00"
10 }
11 ]
12}
获取用户列表
接口描述
用于查询指定用户组中的用户列表。
在线调试
您可以在示例代码中心中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。
请求说明
请求示例
HTTP方法:POST
请求URL: https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/getusers
URL参数:
参数 | 值 |
---|---|
access_token | 通过API Key和Secret Key获取的access_token,参考“Access Token获取” |
Header如下:
参数 | 值 |
---|---|
Content-Type | application/json |
Body中放置请求参数,参数详情如下:
请求参数
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
group_id | 是 | string | 用户组id,长度限制48B |
start | 否 | uint32 | 默认值0,起始序号 |
length | 否 | uint32 | 返回数量,默认值100,最大值1000 |
示例代码
提示一:使用示例代码前,请记得替换其中的示例Token、图片地址或Base64信息。
提示二:部分语言依赖的类或库,请在代码注释中查看下载地址。
1获取用户列表
2curl -i -k 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/getusers?access_token=【调用鉴权接口获取的token】' --data '{"group_id":"group1"}' -H 'Content-Type:application/json; charset=UTF-8'
1<?php
2/**
3 * 发起http post请求(REST API), 并获取REST请求的结果
4 * @param string $url
5 * @param string $param
6 * @return - http response body if succeeds, else false.
7 */
8function request_post($url = '', $param = '')
9{
10 if (empty($url) || empty($param)) {
11 return false;
12 }
13
14 $postUrl = $url;
15 $curlPost = $param;
16 // 初始化curl
17 $curl = curl_init();
18 curl_setopt($curl, CURLOPT_URL, $postUrl);
19 curl_setopt($curl, CURLOPT_HEADER, 0);
20 // 要求结果为字符串且输出到屏幕上
21 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
22 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
23 // post提交方式
24 curl_setopt($curl, CURLOPT_POST, 1);
25 curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
26 // 运行curl
27 $data = curl_exec($curl);
28 curl_close($curl);
29
30 return $data;
31}
32
33$token = '[调用鉴权接口获取的token]';
34$url = 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/getusers?access_token=' . $token;
35$bodys = "{\"group_id\":\"group1\"}"
36$res = request_post($url, $bodys);
37
38var_dump($res);
1package com.baidu.ai.aip;
2
3import com.baidu.ai.aip.utils.HttpUtil;
4import com.baidu.ai.aip.utils.GsonUtils;
5
6import java.util.*;
7
8/**
9* 获取用户列表
10*/
11public class GroupGetusers {
12
13 /**
14 * 重要提示代码中所需工具类
15 * FileUtil,Base64Util,HttpUtil,GsonUtils请从
16 * https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72
17 * https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2
18 * https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3
19 * https://ai.baidu.com/file/470B3ACCA3FE43788B5A963BF0B625F3
20 * 下载
21 */
22 public static String groupGetusers() {
23 // 请求url
24 String url = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/getusers";
25 try {
26 Map<String, Object> map = new HashMap<>();
27 map.put("group_id", "group1");
28
29 String param = GsonUtils.toJson(map);
30
31 // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
32 String accessToken = "[调用鉴权接口获取的token]";
33
34 String result = HttpUtil.post(url, accessToken, "application/json", param);
35 System.out.println(result);
36 return result;
37 } catch (Exception e) {
38 e.printStackTrace();
39 }
40 return null;
41 }
42
43 public static void main(String[] args) {
44 GroupGetusers.groupGetusers();
45 }
46}
1# encoding:utf-8
2
3import requests
4
5'''
6获取用户列表
7'''
8
9request_url = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/getusers"
10
11params = "{\"group_id\":\"group1\"}"
12access_token = '[调用鉴权接口获取的token]'
13request_url = request_url + "?access_token=" + access_token
14headers = {'content-type': 'application/json'}
15response = requests.post(request_url, data=params, headers=headers)
16if response:
17 print (response.json())
1#include <iostream>
2#include <curl/curl.h>
3
4// libcurl库下载链接:https://curl.haxx.se/download.html
5// jsoncpp库下载链接:https://github.com/open-source-parsers/jsoncpp/
6const static std::string request_url = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/getusers";
7static std::string groupGetusers_result;
8/**
9 * curl发送http请求调用的回调函数,回调函数中对返回的json格式的body进行了解析,解析结果储存在全局的静态变量当中
10 * @param 参数定义见libcurl文档
11 * @return 返回值定义见libcurl文档
12 */
13static size_t callback(void *ptr, size_t size, size_t nmemb, void *stream) {
14 // 获取到的body存放在ptr中,先将其转换为string格式
15 groupGetusers_result = std::string((char *) ptr, size * nmemb);
16 return size * nmemb;
17}
18/**
19 * 获取用户列表
20 * @return 调用成功返回0,发生错误返回其他错误码
21 */
22int groupGetusers(std::string &json_result, const std::string &access_token) {
23 std::string url = request_url + "?access_token=" + access_token;
24 CURL *curl = NULL;
25 CURLcode result_code;
26 int is_success;
27 curl = curl_easy_init();
28 if (curl) {
29 curl_easy_setopt(curl, CURLOPT_URL, url.data());
30 curl_easy_setopt(curl, CURLOPT_POST, 1);
31 curl_slist *headers = NULL;
32 headers = curl_slist_append(headers, "Content-Type:application/json;charset=UTF-8");
33 curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
34 curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "{\"group_id\":\"group1\"}");
35 result_code = curl_easy_perform(curl);
36 if (result_code != CURLE_OK) {
37 fprintf(stderr, "curl_easy_perform() failed: %s\n",
38 curl_easy_strerror(result_code));
39 is_success = 1;
40 return is_success;
41 }
42 json_result = groupGetusers_result;
43 curl_easy_cleanup(curl);
44 is_success = 0;
45 } else {
46 fprintf(stderr, "curl_easy_init() failed.");
47 is_success = 1;
48 }
49 return is_success;
50}
1using System;
2using System.IO;
3using System.Net;
4using System.Text;
5using System.Web;
6
7namespace com.baidu.ai
8{
9 public class GroupGetusers
10 {
11 // 获取用户列表
12 public static string groupGetusers()
13 {
14 string token = "[调用鉴权接口获取的token]";
15 string host = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/getusers?access_token=" + token;
16 Encoding encoding = Encoding.Default;
17 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host);
18 request.Method = "post";
19 request.KeepAlive = true;
20 String str = "{\"group_id\":\"group1\"}";
21 byte[] buffer = encoding.GetBytes(str);
22 request.ContentLength = buffer.Length;
23 request.GetRequestStream().Write(buffer, 0, buffer.Length);
24 HttpWebResponse response = (HttpWebResponse)request.GetResponse();
25 StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);
26 string result = reader.ReadToEnd();
27 Console.WriteLine("获取用户列表:");
28 Console.WriteLine(result);
29 return result;
30 }
31 }
32}
返回说明
- 返回结果
字段 | 必选 | 类型 | 说明 |
---|---|---|---|
user_id_list | 是 | array | 用户ID列表 |
-
返回示例
JSON1{ 2 "user_id_list": [ 3 "uid1", 4 "uid2" 5 ] 6}
复制用户
接口描述
用于将已经存在于人脸库中的用户复制到一个新的组。
说明:并不是向一个指定组内添加用户,而是直接从其它组复制用户信息 如果需要注册用户,请直接使用人脸注册接口
在线调试
您可以在示例代码中心中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。
请求说明
请求示例
HTTP方法:POST
请求URL: https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/copy
URL参数:
参数 | 值 |
---|---|
access_token | 通过API Key和Secret Key获取的access_token,参考“Access Token获取 |
Header如下:
参数 | 值 |
---|---|
Content-Type | application/json |
Body中放置请求参数,参数详情如下:
请求参数
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
user_id | 是 | string | 用户id,长度限制48B |
src_group_id | 是 | string | 从指定组里复制信息 |
dst_group_id | 是 | string | 需要添加用户的组id |
返回说明
通过返回的error_code判断是否成功 如失败则查看error_msg获得具体错误信息
返回示例
1// 正确返回值
2{
3 "error_code": 0,
4 "log_id": 3314921889,
5}
6// 发生错误时返回值
7{
8 "error_code": 223111,
9 "log_id": 3111284097,
10 "error_msg": "dst group is not exist"
11}
删除用户
接口描述
用于将用户从某个组中删除。
在线调试
您可以在示例代码中心中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。
请求说明
请求示例
HTTP方法:POST
请求URL: https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/delete
URL参数:
参数 | 值 |
---|---|
access_token | 通过API Key和Secret Key获取的access_token,参考“Access Token获取” |
Header如下:
参数 | 值 |
---|---|
Content-Type | application/json |
Body中放置请求参数,参数详情如下:
请求参数
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
group_id | 是 | string | 用户组id(由数字、字母、下划线组成,长度限制48B) ,如传入“@ALL”则从所有组中删除用户 |
user_id | 是 | string | 用户id(由数字、字母、下划线组成),长度限制48B |
返回说明
通过返回的error_code判断是否成功 如失败则查看error_msg获得具体错误信息:
返回参数
字段 | 必选 | 类型 | 说明 |
---|---|---|---|
log_id | 是 | uint64 | 请求标识码,随机数,唯一 |
返回示例
1// 正确返回值
2{
3
4 "error_code": 0,
5 "log_id": 3314921889,
6}
7// 发生错误时返回值
8{
9 "error_code": 223103,
10 "log_id": 815967402,
11 "error_msg": "user is not exist"
12}
创建用户组
接口描述
用于创建一个空的用户组,如果用户组已存在 则返回错误。
在线调试
您可以在示例代码中心中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。
请求说明
请求示例
HTTP方法:POST
请求URL: https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/add
URL参数:
参数 | 值 |
---|---|
access_token | 通过API Key和Secret Key获取的access_token,参考“Access Token获取” |
Header如下:
参数 | 值 |
---|---|
Content-Type | application/json |
Body中放置请求参数,参数详情如下:
请求参数
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
group_id | 是 | string | 用户组id,标识一组用户(由数字、字母、下划线组成),长度限制48B。 |
示例代码
提示一:使用示例代码前,请记得替换其中的示例Token、图片地址或Base64信息。
提示二:部分语言依赖的类或库,请在代码注释中查看下载地址。
1创建用户组
2curl -i -k 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/add?access_token=【调用鉴权接口获取的token】' --data '{"group_id":"group1"}' -H 'Content-Type:application/json; charset=UTF-8'
1<?php
2/**
3 * 发起http post请求(REST API), 并获取REST请求的结果
4 * @param string $url
5 * @param string $param
6 * @return - http response body if succeeds, else false.
7 */
8function request_post($url = '', $param = '')
9{
10 if (empty($url) || empty($param)) {
11 return false;
12 }
13
14 $postUrl = $url;
15 $curlPost = $param;
16 // 初始化curl
17 $curl = curl_init();
18 curl_setopt($curl, CURLOPT_URL, $postUrl);
19 curl_setopt($curl, CURLOPT_HEADER, 0);
20 // 要求结果为字符串且输出到屏幕上
21 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
22 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
23 // post提交方式
24 curl_setopt($curl, CURLOPT_POST, 1);
25 curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
26 // 运行curl
27 $data = curl_exec($curl);
28 curl_close($curl);
29
30 return $data;
31}
32
33$token = '[调用鉴权接口获取的token]';
34$url = 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/add?access_token=' . $token;
35$bodys = "{\"group_id\":\"group1\"}"
36$res = request_post($url, $bodys);
37
38var_dump($res);
1package com.baidu.ai.aip;
2
3import com.baidu.ai.aip.utils.HttpUtil;
4import com.baidu.ai.aip.utils.GsonUtils;
5
6import java.util.*;
7
8/**
9* 创建用户组
10*/
11public class GroupAdd {
12
13 /**
14 * 重要提示代码中所需工具类
15 * FileUtil,Base64Util,HttpUtil,GsonUtils请从
16 * https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72
17 * https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2
18 * https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3
19 * https://ai.baidu.com/file/470B3ACCA3FE43788B5A963BF0B625F3
20 * 下载
21 */
22 public static String groupAdd() {
23 // 请求url
24 String url = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/add";
25 try {
26 Map<String, Object> map = new HashMap<>();
27 map.put("group_id", "group1");
28
29 String param = GsonUtils.toJson(map);
30
31 // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
32 String accessToken = "[调用鉴权接口获取的token]";
33
34 String result = HttpUtil.post(url, accessToken, "application/json", param);
35 System.out.println(result);
36 return result;
37 } catch (Exception e) {
38 e.printStackTrace();
39 }
40 return null;
41 }
42
43 public static void main(String[] args) {
44 GroupAdd.groupAdd();
45 }
46}
1# encoding:utf-8
2
3import requests
4
5'''
6创建用户组
7'''
8
9request_url = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/add"
10
11params = "{\"group_id\":\"group1\"}"
12access_token = '[调用鉴权接口获取的token]'
13request_url = request_url + "?access_token=" + access_token
14headers = {'content-type': 'application/json'}
15response = requests.post(request_url, data=params, headers=headers)
16if response:
17 print (response.json())
1#include <iostream>
2#include <curl/curl.h>
3
4// libcurl库下载链接:https://curl.haxx.se/download.html
5// jsoncpp库下载链接:https://github.com/open-source-parsers/jsoncpp/
6const static std::string request_url = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/add";
7static std::string groupAdd_result;
8/**
9 * curl发送http请求调用的回调函数,回调函数中对返回的json格式的body进行了解析,解析结果储存在全局的静态变量当中
10 * @param 参数定义见libcurl文档
11 * @return 返回值定义见libcurl文档
12 */
13static size_t callback(void *ptr, size_t size, size_t nmemb, void *stream) {
14 // 获取到的body存放在ptr中,先将其转换为string格式
15 groupAdd_result = std::string((char *) ptr, size * nmemb);
16 return size * nmemb;
17}
18/**
19 * 创建用户组
20 * @return 调用成功返回0,发生错误返回其他错误码
21 */
22int groupAdd(std::string &json_result, const std::string &access_token) {
23 std::string url = request_url + "?access_token=" + access_token;
24 CURL *curl = NULL;
25 CURLcode result_code;
26 int is_success;
27 curl = curl_easy_init();
28 if (curl) {
29 curl_easy_setopt(curl, CURLOPT_URL, url.data());
30 curl_easy_setopt(curl, CURLOPT_POST, 1);
31 curl_slist *headers = NULL;
32 headers = curl_slist_append(headers, "Content-Type:application/json;charset=UTF-8");
33 curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
34 curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "{\"group_id\":\"group1\"}");
35 result_code = curl_easy_perform(curl);
36 if (result_code != CURLE_OK) {
37 fprintf(stderr, "curl_easy_perform() failed: %s\n",
38 curl_easy_strerror(result_code));
39 is_success = 1;
40 return is_success;
41 }
42 json_result = groupAdd_result;
43 curl_easy_cleanup(curl);
44 is_success = 0;
45 } else {
46 fprintf(stderr, "curl_easy_init() failed.");
47 is_success = 1;
48 }
49 return is_success;
50}
1using System;
2using System.IO;
3using System.Net;
4using System.Text;
5using System.Web;
6
7namespace com.baidu.ai
8{
9 public class GroupAdd
10 {
11 // 创建用户组
12 public static string groupAdd()
13 {
14 string token = "[调用鉴权接口获取的token]";
15 string host = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/add?access_token=" + token;
16 Encoding encoding = Encoding.Default;
17 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host);
18 request.Method = "post";
19 request.KeepAlive = true;
20 String str = "{\"group_id\":\"group1\"}";
21 byte[] buffer = encoding.GetBytes(str);
22 request.ContentLength = buffer.Length;
23 request.GetRequestStream().Write(buffer, 0, buffer.Length);
24 HttpWebResponse response = (HttpWebResponse)request.GetResponse();
25 StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);
26 string result = reader.ReadToEnd();
27 Console.WriteLine("创建用户组:");
28 Console.WriteLine(result);
29 return result;
30 }
31 }
32}
返回说明
通过返回的error_code判断是否成功 如失败则查看error_msg获得具体错误信息:
返回参数
字段 | 必选 | 类型 | 说明 |
---|---|---|---|
log_id | 是 | uint64 | 请求标识码,随机数,唯一 |
返回示例
1// 正确返回值
2{
3
4 "error_code": 0,
5 "log_id": 3314921889,
6}
7// 发生错误时返回值
8{
9 "error_code": 223101,
10 "log_id": 815967402,
11 "error_msg": " group is already exist"
12}
删除用户组
接口描述
删除用户组下所有的用户及人脸,如果组不存在 则返回错误。 注:组内的人脸数量如果大于500条,会在后台异步进行删除。在删除期间,无法向该组中添加人脸。1秒钟可以删除20条记录,相当于一小时可以将7万人的人脸组删除干净。用户组删除可能存在一定延迟,期间指定该用户组搜索,仍可搜索到未删除完成的用户信息。如果您的用户组下数据量较大并且希望保证删除的时效性,建议您先循环删除组内的用户,最后删除用户组。
在线调试
您可以在示例代码中心中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。
请求说明
请求示例
HTTP方法:POST
请求URL: https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/delete
URL参数:
参数 | 值 |
---|---|
access_token | 通过API Key和Secret Key获取的access_token,参考“Access Token获取” |
Header如下:
参数 | 值 |
---|---|
Content-Type | application/json |
Body中放置请求参数,参数详情如下:
请求参数
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
group_id | 是 | string | 用户组id,标识一组用户(由数字、字母、下划线组成),长度限48B。 |
示例代码
提示一:使用示例代码前,请记得替换其中的示例Token、图片地址或Base64信息。
提示二:部分语言依赖的类或库,请在代码注释中查看下载地址。
1删除用户组
2curl -i -k 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/delete?access_token=【调用鉴权接口获取的token】' --data '{"group_id":"group1"}' -H 'Content-Type:application/json; charset=UTF-8'
1<?php
2/**
3 * 发起http post请求(REST API), 并获取REST请求的结果
4 * @param string $url
5 * @param string $param
6 * @return - http response body if succeeds, else false.
7 */
8function request_post($url = '', $param = '')
9{
10 if (empty($url) || empty($param)) {
11 return false;
12 }
13
14 $postUrl = $url;
15 $curlPost = $param;
16 // 初始化curl
17 $curl = curl_init();
18 curl_setopt($curl, CURLOPT_URL, $postUrl);
19 curl_setopt($curl, CURLOPT_HEADER, 0);
20 // 要求结果为字符串且输出到屏幕上
21 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
22 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
23 // post提交方式
24 curl_setopt($curl, CURLOPT_POST, 1);
25 curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
26 // 运行curl
27 $data = curl_exec($curl);
28 curl_close($curl);
29
30 return $data;
31}
32
33$token = '[调用鉴权接口获取的token]';
34$url = 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/delete?access_token=' . $token;
35$bodys = "{\"group_id\":\"group1\"}"
36$res = request_post($url, $bodys);
37
38var_dump($res);
1ppackage com.baidu.ai.aip;
2
3import com.baidu.ai.aip.utils.HttpUtil;
4import com.baidu.ai.aip.utils.GsonUtils;
5
6import java.util.*;
7
8/**
9* 删除用户组
10*/
11public class GroupDelete {
12
13 /**
14 * 重要提示代码中所需工具类
15 * FileUtil,Base64Util,HttpUtil,GsonUtils请从
16 * https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72
17 * https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2
18 * https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3
19 * https://ai.baidu.com/file/470B3ACCA3FE43788B5A963BF0B625F3
20 * 下载
21 */
22 public static String groupDelete() {
23 // 请求url
24 String url = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/delete";
25 try {
26 Map<String, Object> map = new HashMap<>();
27 map.put("group_id", "group1");
28
29 String param = GsonUtils.toJson(map);
30
31 // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
32 String accessToken = "[调用鉴权接口获取的token]";
33
34 String result = HttpUtil.post(url, accessToken, "application/json", param);
35 System.out.println(result);
36 return result;
37 } catch (Exception e) {
38 e.printStackTrace();
39 }
40 return null;
41 }
42
43 public static void main(String[] args) {
44 GroupDelete.groupDelete();
45 }
46}
1# encoding:utf-8
2
3import requests
4
5'''
6删除用户组
7'''
8
9request_url = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/delete"
10
11params = "{\"group_id\":\"group1\"}"
12access_token = '[调用鉴权接口获取的token]'
13request_url = request_url + "?access_token=" + access_token
14headers = {'content-type': 'application/json'}
15response = requests.post(request_url, data=params, headers=headers)
16if response:
17 print (response.json())
1#include <iostream>
2#include <curl/curl.h>
3
4// libcurl库下载链接:https://curl.haxx.se/download.html
5// jsoncpp库下载链接:https://github.com/open-source-parsers/jsoncpp/
6const static std::string request_url = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/delete";
7static std::string groupDelete_result;
8/**
9 * curl发送http请求调用的回调函数,回调函数中对返回的json格式的body进行了解析,解析结果储存在全局的静态变量当中
10 * @param 参数定义见libcurl文档
11 * @return 返回值定义见libcurl文档
12 */
13static size_t callback(void *ptr, size_t size, size_t nmemb, void *stream) {
14 // 获取到的body存放在ptr中,先将其转换为string格式
15 groupDelete_result = std::string((char *) ptr, size * nmemb);
16 return size * nmemb;
17}
18/**
19 * 删除用户组
20 * @return 调用成功返回0,发生错误返回其他错误码
21 */
22int groupDelete(std::string &json_result, const std::string &access_token) {
23 std::string url = request_url + "?access_token=" + access_token;
24 CURL *curl = NULL;
25 CURLcode result_code;
26 int is_success;
27 curl = curl_easy_init();
28 if (curl) {
29 curl_easy_setopt(curl, CURLOPT_URL, url.data());
30 curl_easy_setopt(curl, CURLOPT_POST, 1);
31 curl_slist *headers = NULL;
32 headers = curl_slist_append(headers, "Content-Type:application/json;charset=UTF-8");
33 curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
34 curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "{\"group_id\":\"group1\"}");
35 result_code = curl_easy_perform(curl);
36 if (result_code != CURLE_OK) {
37 fprintf(stderr, "curl_easy_perform() failed: %s\n",
38 curl_easy_strerror(result_code));
39 is_success = 1;
40 return is_success;
41 }
42 json_result = groupDelete_result;
43 curl_easy_cleanup(curl);
44 is_success = 0;
45 } else {
46 fprintf(stderr, "curl_easy_init() failed.");
47 is_success = 1;
48 }
49 return is_success;
50}
1using System;
2using System.IO;
3using System.Net;
4using System.Text;
5using System.Web;
6
7namespace com.baidu.ai
8{
9 public class GroupDelete
10 {
11 // 删除用户组
12 public static string groupDelete()
13 {
14 string token = "[调用鉴权接口获取的token]";
15 string host = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/delete?access_token=" + token;
16 Encoding encoding = Encoding.Default;
17 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host);
18 request.Method = "post";
19 request.KeepAlive = true;
20 String str = "{\"group_id\":\"group1\"}";
21 byte[] buffer = encoding.GetBytes(str);
22 request.ContentLength = buffer.Length;
23 request.GetRequestStream().Write(buffer, 0, buffer.Length);
24 HttpWebResponse response = (HttpWebResponse)request.GetResponse();
25 StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);
26 string result = reader.ReadToEnd();
27 Console.WriteLine("删除用户组:");
28 Console.WriteLine(result);
29 return result;
30 }
31 }
32}
返回说明
通过返回的error_code判断是否成功 如失败则查看error_msg获得具体错误信息:
返回参数
字段 | 必选 | 类型 | 说明 |
---|---|---|---|
log_id | 是 | uint64 | 请求标识码,随机数,唯一 |
返回示例
1// 正确返回值
2{
3
4 "error_code":0,
5 "log_id": 3314921889,
6}
7// 发生错误时返回值
8{
9 "error_code": 223100,
10 "log_id": 815967402,
11 "error_msg": " group is not exist"
12}
组列表查询
接口描述
用于查询用户组的列表。
在线调试
您可以在示例代码中心中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。
请求说明
请求示例
HTTP方法:POST
请求URL: https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/getlist
URL参数:
参数 | 值 |
---|---|
access_token | 通过API Key和Secret Key获取的access_token,参考“Access Token获取” |
Header如下:
参数 | 值 |
---|---|
Content-Type | application/json |
Body中放置请求参数,参数详情如下:
请求参数
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
start | 否 | uint32 | 默认值0,起始序号 |
length | 否 | uint32 | 返回数量,默认值100,最大值1000 |
示例代码
提示一:使用示例代码前,请记得替换其中的示例Token、图片地址或Base64信息。
提示二:部分语言依赖的类或库,请在代码注释中查看下载地址。
1组列表查询
2curl -i -k 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/getlist?access_token=【调用鉴权接口获取的token】' --data '{"start":0,"length":100}' -H 'Content-Type:application/json; charset=UTF-8'
1<?php
2/**
3 * 发起http post请求(REST API), 并获取REST请求的结果
4 * @param string $url
5 * @param string $param
6 * @return - http response body if succeeds, else false.
7 */
8function request_post($url = '', $param = '')
9{
10 if (empty($url) || empty($param)) {
11 return false;
12 }
13
14 $postUrl = $url;
15 $curlPost = $param;
16 // 初始化curl
17 $curl = curl_init();
18 curl_setopt($curl, CURLOPT_URL, $postUrl);
19 curl_setopt($curl, CURLOPT_HEADER, 0);
20 // 要求结果为字符串且输出到屏幕上
21 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
22 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
23 // post提交方式
24 curl_setopt($curl, CURLOPT_POST, 1);
25 curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
26 // 运行curl
27 $data = curl_exec($curl);
28 curl_close($curl);
29
30 return $data;
31}
32
33$token = '[调用鉴权接口获取的token]';
34$url = 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/getlist?access_token=' . $token;
35$bodys = "{\"start\":0,\"length\":100}"
36$res = request_post($url, $bodys);
37
38var_dump($res);
1package com.baidu.ai.aip;
2
3import com.baidu.ai.aip.utils.HttpUtil;
4import com.baidu.ai.aip.utils.GsonUtils;
5
6import java.util.*;
7
8/**
9* 组列表查询
10*/
11public class GroupGetlist {
12
13 /**
14 * 重要提示代码中所需工具类
15 * FileUtil,Base64Util,HttpUtil,GsonUtils请从
16 * https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72
17 * https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2
18 * https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3
19 * https://ai.baidu.com/file/470B3ACCA3FE43788B5A963BF0B625F3
20 * 下载
21 */
22 public static String groupGetlist() {
23 // 请求url
24 String url = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/getlist";
25 try {
26 Map<String, Object> map = new HashMap<>();
27 map.put("start", 0);
28 map.put("length", 100);
29
30 String param = GsonUtils.toJson(map);
31
32 // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
33 String accessToken = "[调用鉴权接口获取的token]";
34
35 String result = HttpUtil.post(url, accessToken, "application/json", param);
36 System.out.println(result);
37 return result;
38 } catch (Exception e) {
39 e.printStackTrace();
40 }
41 return null;
42 }
43
44 public static void main(String[] args) {
45 GroupGetlist.groupGetlist();
46 }
47}
1# encoding:utf-8
2
3import requests
4
5'''
6组列表查询
7'''
8
9request_url = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/getlist"
10
11params = "{\"start\":0,\"length\":100}"
12access_token = '[调用鉴权接口获取的token]'
13request_url = request_url + "?access_token=" + access_token
14headers = {'content-type': 'application/json'}
15response = requests.post(request_url, data=params, headers=headers)
16if response:
17 print (response.json())
1#include <iostream>
2#include <curl/curl.h>
3
4// libcurl库下载链接:https://curl.haxx.se/download.html
5// jsoncpp库下载链接:https://github.com/open-source-parsers/jsoncpp/
6const static std::string request_url = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/getlist";
7static std::string groupGetlist_result;
8/**
9 * curl发送http请求调用的回调函数,回调函数中对返回的json格式的body进行了解析,解析结果储存在全局的静态变量当中
10 * @param 参数定义见libcurl文档
11 * @return 返回值定义见libcurl文档
12 */
13static size_t callback(void *ptr, size_t size, size_t nmemb, void *stream) {
14 // 获取到的body存放在ptr中,先将其转换为string格式
15 groupGetlist_result = std::string((char *) ptr, size * nmemb);
16 return size * nmemb;
17}
18/**
19 * 组列表查询
20 * @return 调用成功返回0,发生错误返回其他错误码
21 */
22int groupGetlist(std::string &json_result, const std::string &access_token) {
23 std::string url = request_url + "?access_token=" + access_token;
24 CURL *curl = NULL;
25 CURLcode result_code;
26 int is_success;
27 curl = curl_easy_init();
28 if (curl) {
29 curl_easy_setopt(curl, CURLOPT_URL, url.data());
30 curl_easy_setopt(curl, CURLOPT_POST, 1);
31 curl_slist *headers = NULL;
32 headers = curl_slist_append(headers, "Content-Type:application/json;charset=UTF-8");
33 curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
34 curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "{\"start\":0,\"length\":100}");
35 result_code = curl_easy_perform(curl);
36 if (result_code != CURLE_OK) {
37 fprintf(stderr, "curl_easy_perform() failed: %s\n",
38 curl_easy_strerror(result_code));
39 is_success = 1;
40 return is_success;
41 }
42 json_result = groupGetlist_result;
43 curl_easy_cleanup(curl);
44 is_success = 0;
45 } else {
46 fprintf(stderr, "curl_easy_init() failed.");
47 is_success = 1;
48 }
49 return is_success;
50}
1using System;
2using System.IO;
3using System.Net;
4using System.Text;
5using System.Web;
6
7namespace com.baidu.ai
8{
9 public class GroupGetlist
10 {
11 // 组列表查询
12 public static string groupGetlist()
13 {
14 string token = "[调用鉴权接口获取的token]";
15 string host = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/getlist?access_token=" + token;
16 Encoding encoding = Encoding.Default;
17 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host);
18 request.Method = "post";
19 request.KeepAlive = true;
20 String str = "{\"start\":0,\"length\":100}";
21 byte[] buffer = encoding.GetBytes(str);
22 request.ContentLength = buffer.Length;
23 request.GetRequestStream().Write(buffer, 0, buffer.Length);
24 HttpWebResponse response = (HttpWebResponse)request.GetResponse();
25 StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);
26 string result = reader.ReadToEnd();
27 Console.WriteLine("组列表查询:");
28 Console.WriteLine(result);
29 return result;
30 }
31 }
32}
返回说明
返回参数
- 返回结果
字段 | 必选 | 类型 | 说明 |
---|---|---|---|
group_id_list | 是 | array | group |
-
返回示例
JSON1{ 2 "group_id_list": [ 3 "gid1", 4 "gid2" 5 ] 6}