阿里云视觉智能开放平台提供人脸人体AI服务,该服务中的大部分API都可以单独使用,人脸搜索的API则需要多个API调用配合使用。本文档为您介绍如何调用多个API进行人脸搜索。
操作流程
开通服务
调用人脸搜索相关API前,您需要开通人脸人体服务。在添加人脸数据时,需要先将图片上传至上海地域的OSS Bucket中生成URL链接,通过图片URL链接添加人脸数据。关于如何开通OSS服务请参见开通OSS服务。下面为您介绍如何开通人脸人体服务。
添加POM依赖
在您的Java工程中添加人体人脸能力的POM依赖。
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.5.14</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-facebody -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-facebody</artifactId>
<version>1.2.2</version>
</dependency>
创建人脸数据库
调用CreateFaceDb接口创建人脸数据库,数据库名称为:compare_face_test。Java代码请求示例如下。
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;
import java.util.*;
import com.aliyuncs.facebody.model.v20191230.*;
public class CreateFaceDb {
public static void main(String[] args) {
DefaultProfile profile = DefaultProfile.getProfile("cn-shanghai", "<accessKeyId>", "<accessSecret>");
IAcsClient client = new DefaultAcsClient(profile);
CreateFaceDbRequest request = new CreateFaceDbRequest();
request.setRegionId("cn-shanghai");
request.setName("compare_face_test");
try {
CreateFaceDbResponse response = client.getAcsResponse(request);
System.out.println(new Gson().toJson(response));
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
System.out.println("ErrCode:" + e.getErrCode());
System.out.println("ErrMsg:" + e.getErrMsg());
System.out.println("RequestId:" + e.getRequestId());
}
}
}
添加人脸样本
调用AddFaceEntity接口添加人脸样本,添加的人脸样本ID为:compare_face_test_entity。Java代码请求示例如下。
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;
import java.util.*;
import com.aliyuncs.facebody.model.v20191230.*;
public class AddFaceEntity {
public static void main(String[] args) {
DefaultProfile profile = DefaultProfile.getProfile("cn-shanghai", "<accessKeyId>", "<accessSecret>");
IAcsClient client = new DefaultAcsClient(profile);
AddFaceEntityRequest request = new AddFaceEntityRequest();
request.setRegionId("cn-shanghai");
request.setDbName("compare_face_test");
request.setEntityId("compare_face_test_entity");
request.setLabels("人事");
try {
AddFaceEntityResponse response = client.getAcsResponse(request);
System.out.println(new Gson().toJson(response));
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
System.out.println("ErrCode:" + e.getErrCode());
System.out.println("ErrMsg:" + e.getErrMsg());
System.out.println("RequestId:" + e.getRequestId());
}
}
}
添加人脸数据
在添加人脸前,我们需要将人脸图片生成图片URL,然后调用AddFace接口传入图片URL添加人脸数据。
搜索人脸
在人脸数据库compare_face_test中,搜索已经添加的人脸数据。Java代码请求示例如下。
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;
import java.util.*;
import com.aliyuncs.facebody.model.v20191230.*;
public class SearchFace {
public static void main(String[] args) {
DefaultProfile profile = DefaultProfile.getProfile("cn-shanghai", "<accessKeyId>", "<accessSecret>");
IAcsClient client = new DefaultAcsClient(profile);
SearchFaceRequest request = new SearchFaceRequest();
request.setRegionId("cn-shanghai");
request.setDbName("compare_face_test");
request.setImageUrl("https://viapi-test.oss-cn-shanghai.aliyuncs.com/test-team/tiankong/9%E4%BA%BA%E8%84%B82.png");
request.setLimit(5);
try {
SearchFaceResponse response = client.getAcsResponse(request);
System.out.println(new Gson().toJson(response));
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
System.out.println("ErrCode:" + e.getErrCode());
System.out.println("ErrMsg:" + e.getErrMsg());
System.out.println("RequestId:" + e.getRequestId());
}
}
}
搜索人脸数据的返回结果示例如下。
{
"RequestId": "D2995F67-5A0E-4FA4-BFF5-5692B7C4A558",
"Data": {
"MatchList": [
{
"FaceItems": [
{
"FaceId": "1589871296906000",
"EntityId": "compare_face_test_entity",
"Score": 1,
"ExtraData": "小明"
}
],
"Location": {
"X": 191,
"Y": 66,
"Height": 324,
"Width": 230
}
}
]
}
}
在文档使用中是否遇到以下问题
更多建议
匿名提交