当前位置 博文首页 > 昵称已经被占用咯:对接阿里人脸识别及OSS对象存储java代码
近期项目对接阿里 人脸识别(人脸搜索1:N),然后查看api中请求的是图片url。然后一整阿里云。找到对象存储OSS。对象存储OOS及人脸识别可以自行开通并创建,这里只关注代码实现
自己在 processon在线平台画的。整体流程为:1.前端传输图片到后台 2.后台拿到图片调用阿里云对象存储接口(putObject)并返回图片的路径。3.然后根据配置信息及拿到的图片url调用阿里人脸搜索1:N接口(getAcsResponse)返回人脸库中对应的信息。
全配置具体版本可以查看阿里云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());
}
注:在使用人脸对比之前需要在人脸库数据库中填加人脸信息。