由于前些天学校还有特别多的课程,所以这次训练营的任务推到了现在。
之前也花过一下午的时间去看,看阿里云视觉智能开放平台的说明文档,看OSS的文档等等。可惜学渣的我当时没有看懂。
可能由于自身专业知识和技能的匮乏,比如js和jsp都没有掌握,比如oss听都没听到过。
于是今天又花费了一晚上的时间捣鼓,终于,我实现了其中oss和车牌识别的功能(并不是项目全部)。
在许多小区和商场的停车场都设有无人进出口管理系统,通过摄像头进行识别,对进出口的车辆进行判断和记录。从而达到抬杆、计时、收费、场内车辆数量的管理。
简单思路如下:
当前设计思路如下:
对象存储(Object Storage Service,简称OSS),是阿里云对外提供的海量、安全和高可靠的云存储服务。
在我看来,oss就是一个类似远端硬盘的一个东西,只不过它可以提供给我们一个URL,具有平台无关性和安全可靠的服务。
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
这个maven也是在本次训练营第一次接触,初步感觉是像一个类似js里一个CDN的东西。
<dependency>
<groupId>com.aliyun.ossgroupId>
<artifactId>aliyun-sdk-ossartifactId>
<version>3.8.0version>
dependency>
package com.example.demo;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.PutObjectRequest;
import java.io.File;
import java.net.URL;
import java.security.SecureRandom;
import java.util.Date;
import java.lang.*;
import java.util.Scanner;
public class UploadPic {
public static String UploadPic(){
// Endpoint以上海为例,其它Region请按实际情况填写。
String endpoint = "oss-cn-shanghai.aliyuncs.com";
// 阿里云主账号AccessKey。
String accessKeyId = "*******************";
String accessKeySecret = "*******************";
//本地文件名
System.out.println("请输入本地图片path:");
Scanner scanner = new Scanner(System.in);
String fileName = scanner.nextLine();
String bucketName = "number-plates";
// 获取文件的后缀名
String suffixName = fileName.substring(fileName.lastIndexOf("."));
// 生成上传文件名
String objectName = System.currentTimeMillis() + "" + new SecureRandom().nextInt(0x0400) + suffixName;
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 如果需要上传时设置存储类型与访问权限,请参考以下示例代码。
// ObjectMetadata metadata = new ObjectMetadata();
// metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
// metadata.setObjectAcl(CannedAccessControlList.Private);
// putObjectRequest.setMetadata(metadata);
// 上传文件。
ossClient.putObject(bucketName, objectName, new File(fileName));
// 设置URL过期时间为1小时。
Date expiration = new Date(System.currentTimeMillis() + 3600 * 1000);
// 生成以GET方法访问的签名URL,访客可以直接通过浏览器访问相关内容。
URL url = ossClient.generatePresignedUrl(bucketName, objectName, expiration);
// 关闭OSSClient。
ossClient.shutdown();
return url.toString();
}
}
<dependency>
<groupId>com.google.code.gsongroupId>
<artifactId>gsonartifactId>
<version>2.8.5version>
dependency>
<dependency>
<groupId>com.aliyungroupId>
<artifactId>objectdetartifactId>
<version>0.0.5version>
dependency>
<dependency>
<groupId>com.aliyungroupId>
<artifactId>aliyun-java-sdk-coreartifactId>
<version>4.4.8version>
dependency>
<dependency>
<groupId>com.aliyungroupId>
<artifactId>aliyun-java-sdk-ecsartifactId>
<version>4.17.6version>
dependency>
<dependency>
<groupId>com.aliyungroupId>
<artifactId>ocrartifactId>
<version>1.0.3version>
dependency>
<dependency>
<groupId>com.aliyungroupId>
<artifactId>aliyun-java-sdk-ocrartifactId>
<version>1.0.7version>
dependency>
package com.example.demo;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.ocr.model.v20191230.RecognizeLicensePlateRequest;
import com.aliyuncs.ocr.model.v20191230.RecognizeLicensePlateResponse;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;
public class RecognizeLicensePlate {
public RecognizeLicensePlate() {
{
String accessKeyId = "*********************";
String accessKeySecret = "*********************";
String PicURL = UploadPic.UploadPic();
DefaultProfile profile = DefaultProfile.getProfile("cn-shanghai", accessKeyId, accessKeySecret);
IAcsClient client = new DefaultAcsClient(profile);
RecognizeLicensePlateRequest request = new RecognizeLicensePlateRequest();
request.setRegionId("cn-shanghai");
request.setImageURL(PicURL);
try {
RecognizeLicensePlateResponse response = client.getAcsResponse(request);
System.out.println(response.getData().getPlates());
System.out.println("------------------------------------------------------------------");
String result = new Gson().toJson(response);
System.out.println(result);
System.out.println(new Gson().toJson(response.getData().getPlates()));
System.out.println("------------------------------------------------------------------");
} 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());
System.out.println(PicURL);
}
}
}
}
识别正确
emmm,目前的话就只做到了这里,希望接下来我可以利用上个星期学的Vue来进行前端的搭建,同时也实现时间、订单的数据库储存。
本人是参加的达摩院特别版-视觉AI训练营第二期
训练营里面的小哥哥小姐姐说话超级好听,也有超多大佬,我超喜欢这里!