当前位置 博文首页 > 昵称已经被占用咯:对接阿里人脸识别及OSS对象存储java代码

    昵称已经被占用咯:对接阿里人脸识别及OSS对象存储java代码

    作者:[db:作者] 时间:2021-09-15 16:27

    近期项目对接阿里 人脸识别(人脸搜索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());
    		}
    

    注:在使用人脸对比之前需要在人脸库数据库中填加人脸信息。

    over

    cs
    下一篇:没有了