4.6 人脸资源管理
4.6.4 删除人脸
return result;
}
public static void main(String[] args) {
CloseableHttpClient client = buildClient(TraceApacheHttpClientBuilder.create()).build();
// endpoint,project_id和face_set_name需要替换成实际信息。
String url = "https://{{endpoint}}/v2/{{project_id}}/face-sets/{{face_set_name}}/faces";
String token = "对应region的token";
String jsonStr = "{ \"face_id\": \"iexEBb6t\", \"external_image_id\": \"imageID\", \"external_fields
\": { \"timestamp\": 12, \"id\": \"300018629384756\" }}";
String result = doPut(url, jsonStr,token, client);
System.out.println(result);
} }
响应示例
状态码:200 成功响应样例
{ "face_number": 1, "face_set_id": "T785tx1N", "face_set_name": "showFaceSet"
}
状态码:400 失败响应样例
{ "error_code": "FRS.0303",
"error_msg": "The face id is not exist, checkout your input."
}
状态码
状态码请参见状态码。
错误码
错误码请参见错误码。
4.6.4 删除人脸
功能介绍
根据指定字段删除人脸库中人脸。
前提条件:
请确保您已开通人脸识别服务,具体操作方法请参见申请服务。
调试
您可以在API Explorer中调试该接口。
URI
DELETE /v2/{project_id}/face-sets/{face_set_name}/faces?field_name=field_value
表4-81 路径参数
参数 是否必选 参数类型 描述
project_id 是 String 项目ID,获取方法请参见获取项
目ID/账号名/AK/SK。
face_set_nam
e 是 String 人脸库名称。
field_name 是 String 按条件删除的字段名,支持固定 字段(external_image_id和 face_id),以及用户的自定义
字段(不支持空字符串和null值
删除)。请求参数
表4-82 请求 Header 参数
参数 是否必选 参数类型 描述
X-Auth-Token 是 String 用户Token。
Token认证就是在调用API的时 候将Token加到请求消息头,从 而通过身份认证,获得操作API 的权限,响应消息头中X-Subject-Token的值即为Token。
响应参数
状态码:200
表4-83 响应 Body 参数
参数 参数类型 描述
face_number Integer 删除的人脸数量。 调用失败时无此字段。
face_set_id String 人脸库ID。 调用失败时无此字段。
face_set_nam
e String 人脸库名称。 调用失败时无此字段。
状态码: 400
表4-84 响应 Body 参数
参数 参数类型 描述
error_code String 调用失败时的错误码,具体请参考错误码。 调用 成功时无此字段。
error_msg String 调用失败时的错误信息。 调用成功时无此字段。
请求示例
● Python3语言请求代码示例(其他语言参照下列示例编写或使用FRS SDK)
# coding:utf-8 -*-import requests import base64
endpoint = '开通服务所在region的人脸识别服务域名' project_id = '开通服务所在region的用户项目ID' token = '用户获取得到的实际token值'
headers = {'Content-Type': 'application/json', 'X-Auth-Token': token}
face_set_name = 'showFaceSet' face_id = 'T785tx1N'
url = "https://{endpoint}/v2/{project_id}/face-sets/{face_set_name}/faces?id={face_id}".format(
endpoint=endpoint, project_id=project_id, face_set_name=face_set_name,face_id=face_id) response = requests.delete(url, headers=headers, verify=False)
print(response.text)
● Java语言请求代码示例(其他语言参照下列示例编写或使用FRS SDK)
import com.huawei.trace.http.apache.httpclient.TraceApacheHttpClientBuilder;
import org.apache.http.ssl.TrustStrategy;
* 使用前需已配置HttpClient jar包。jar包可通过下载SDK获取 */
public class DeleteFaceByFaceId {
protected static HttpClientBuilder buildClient(HttpClientBuilder httpClientBuilder) { SSLContext sslContext = null;
try {
sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
public boolean isTrusted(X509Certificate[] arg0, String arg1) throws CertificateException { return true;
httpClientBuilder.setSSLContext(sslContext);
httpClientBuilder.setConnectionTimeToLive(30, TimeUnit.SECONDS);
HostnameVerifier hostnameVerifier = NoopHostnameVerifier.INSTANCE;
SSLConnectionSocketFactory sslSocketFactory = new SSLConnectionSocketFactory(sslContext, hostnameVerifier);
Registry<ConnectionSocketFactory> socketFactoryRegistry
= RegistryBuilder.<ConnectionSocketFactory>create().register("http",
PlainConnectionSocketFactory.getSocketFactory()).register("https", sslSocketFactory).build();
PoolingHttpClientConnectionManager connMgr = new PoolingHttpClientConnectionManager(socketFactoryRegistry);
connMgr.setMaxTotal(200);
connMgr.setDefaultMaxPerRoute(100);
httpClientBuilder.setConnectionManager(connMgr);
return httpClientBuilder;
}
public static String doDelete(String url, String token, CloseableHttpClient client) { HttpDelete delete = new HttpDelete(url);
delete.setHeader(HttpHeaders.CONTENT_TYPE, "application/json");
//time unit is milliseconds RequestConfig requestConfig =
RequestConfig.custom().setConnectTimeout(3000).setSocketTimeout(3000).build();
delete.setConfig(requestConfig);
delete.setHeader("X-Auth-Token", token);
HttpResponse response = null;
System.arraycopy(byteStream, 0, new byte[byteStream.length], 0, byteStream.length);
result = new String(byteStream, StandardCharsets.UTF_8);
}
} catch (IOException e) { e.printStackTrace();
}
return result;
}
public static void main(String[] args) {
CloseableHttpClient client = buildClient(TraceApacheHttpClientBuilder.create()).build();
// endpoint,project_id,face_set_name和face_id需要替换成实际信息。
String url = "https://{{endpoint}}/v2/{{project_id}}/face-sets/{{face_set_name}}/faces?
face_id={{face_id}}";
String token = "对应region的token";
String result = doDelete(url, token, client);
System.out.println(result);
} }
响应示例
状态码:200 成功响应样例
{ "face_number": 1, "face_set_id": "T785tx1N", "face_set_name": "showFaceSet"
}
状态码:400 失败响应样例
{ "error_code": "FRS.0402",
"error_msg": "External id is not exist, can not delete face"
}