近期项目对接阿里 人脸识别(人脸搜索1:N),然后查看api中请求的是图片url。然后一整阿里云。找到对象存储OSS。对象存储OOS及人脸识别可以自行开通并创建,这里只关注代码实现
大致流程
自己在 processon在线平台画的。整体流程为:1.前端传输图片到后台 2.后台拿到图片调用阿里云对象存储接口(putObject)并返回图片的路径。3.然后根据配置信息及拿到的图片url调用阿里人脸搜索1:N接口(getAcsResponse)返回人脸库中对应的信息。

maven配置
全配置具体版本可以查看阿里云java JDK参考。
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.1.1</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-green</artifactId>
<version>3.6.1</version>
</dependency>
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.10.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-facebody</artifactId>
<version>1.0.8</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.5.10</version>
<exclusions>
<exclusion>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-ram</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-kms</artifactId>
<version>2.11.0</version>
</dependency>
配置类信息
这边只说下个人AccessKey 获取,登陆账号后控制台界面汇总点击个人头像时会有AccessKey 管理选项。进入后可以创建。
上代码
文件上传方法传入(文件名,流信息):
public static String uploadFile(String fileName,FileInputStream fis) {
PropertiesUtils proper = new PropertiesUtils();
String url = "";
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build("<OOS上传网址如上海区:http://oss-cn-shanghai.aliyuncs.com>", "<accessKeyId>","<accessSecret>");
String objectName = "<文件名路径>" + fileName;
PutObjectResult result = ossClient.putObject("<Bucket名称>", objectName, fis);
// 设置连接1天有效期
Date expiration = new Date(new Date().getTime() + 3600l * 1000 * 24);
// 返回上传文件下载路径
url = ossClient.generatePresignedUrl("<Bucket 名称>", objectName, expiration).toString();
// 关闭OSSClient。
ossClient.shutdown();
return url;
}
图片识别代码块调用上面文件上传方法:
DefaultProfile profile = DefaultProfile.getProfile("<开通区域如上海:cn-shanghai>", "<accessKeyId>","<accessSecret>");
IAcsClient client = new DefaultAcsClient(profile);
SearchFaceRequest request = new SearchFaceRequest();
//本地文件做测试
File file = new File("D:\\xxx.png");
file.getName();
FileInputStream fis = new FileInputStream(file);
//调用上面上传文件方法
request.setImageUrl(uploadFile(file.getName(), fis));
request.setDbName("default");
request.setLimit(1);
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());
}
注:在使用人脸对比之前需要在人脸库数据库中填加人脸信息。
本文档介绍了如何将前端上传的图片通过阿里云OSS存储,并利用阿里云人脸识别服务进行1:N搜索。首先,前端将图片发送至后台,后台调用OSS接口存储图片并获取URL。接着,使用该URL调用人脸搜索API,返回人脸匹配信息。配置中涉及的依赖包括阿里云的各种SDK。代码示例展示了文件上传和图片识别的实现过程,注意在使用前需在人脸库中添加人脸信息。


被折叠的 条评论
为什么被折叠?



