实现车牌识别功能我采用调用阿里云车牌识别API的方法,我使用的是eclipse,jdk 1.8,Tomcat 9.0
1.进入阿里云主页先创建阿里云账号
2.在控制台的头像那里找到AccessKey管理
然后创建AccessKey,通过手机号验证获得Secret,记住AccessKey ID和Secret
3.在阿里云搜索框输入车牌识别,会出现文字识别,然后开通文字识别功能,地域就选择华东2上海
创建完成后点击产品文档,在文字识别栏中的车辆交通类识别找到车牌识别
在文档底部找到SDK下载安装
选择自己想要的SDK语言种类,我用的是Java的,但是推荐使用Java(支持本地上上传的),因为阿里云车牌识别API是不支持本机图片路径的,需要将图片上传到OSS获取图片URL地址
可以在官方给出的地址下载aliyun-java-sdk-core和aliyun-java-sdk-ocr两个SDK包
紧接着就是进行安装配置,推荐使用Maven,但是我使用的是集成开发环境(IDE)导入JAR文件
第一个方法:
Maven方法:
在pom.xml文件中添加Maven依赖安装Java SDK
aliyun-java-sdk-core
fastjson
aliyun-java-sdk-imageenhan
aliyun-java-sdk-imagerecog
aliyun-java-sdk-facebody
aliyun-java-sdk-imageseg
aliyun-java-sdk-goodstech
aliyun-java-sdk-imageaudit
aliyun-java-sdk-objectdet
第二个方法:
集成开发环境导入jar包方法:
将所需要的jar包直接复制在lib文件夹下,jar包可以在Maven仓库中查找下载,所需要的jar包如图所示:
jar包导好后创建一个测试类进行测试是否成功,需要改三处地方:DefaultProfile.getProfile()方法中的AccessKeyID和AccessKeySecret,以及req.setImageURL()方法中的图片URL地址,这个地址不是本机图片的地址路径,需要将图片上传到阿里云OSS
package opencvCar;
import com.aliyuncs.AcsResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.RpcAcsRequest;
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.alibaba.fastjson.JSON;
public class CarTest {
static IAcsClient client =null;
public static void main(String[] args) throws Exception {
DefaultProfile profile = DefaultProfile.getProfile("cn-shanghai", "你的AccessKeyID", "你的AccessKeySecret");
client = new DefaultAcsClient(profile);
testRecognizeLicensePlate(); // 车牌识别
}
private static
try {
return client.getAcsResponse(req);
} catch (ServerException e) {
// 服务端异常
System.out.println(String.format("ServerException: errCode=%s, errMsg=%s", e.getErrCode(), e.getErrMsg()));
throw e;
} catch (ClientException e) {
// 客户端错误
System.out.println(String.format("ClientException: errCode=%s, errMsg=%s", e.getErrCode(), e.getErrMsg()));
throw e;
} catch (Exception e) {
System.out.println("Exception:" + e.getMessage());
throw e;
}
}
public static void testRecognizeLicensePlate() throws Exception {
System.out.println("-------- 车牌识别 --------------");
RecognizeLicensePlateRequest req = new RecognizeLicensePlateRequest();
req.setImageURL("被测图片的URL地址,例如https://markma.oss-cn-shanghai.aliyuncs.com/car.jpg");
RecognizeLicensePlateResponse resp = getAcsResponse(req);
printResponse(req.getSysActionName(), resp.getRequestId(), resp);
}
public static void printResponse(String actionName, String requestId, AcsResponse data) {
System.out.println(String.format("actionName=%s, requestId=%s, data=%s", actionName, requestId,JSON.toJSonString(data) ));
}
}
4.将图片上传到OSS获取图片URL路径
在阿里云控制台找到对象存储OSS
在Bucket管理创建Bucket,如果已经创建好了可以不用创建
填写Bucket名称,地域我选择的是华东2(上海) ,其它不用更改
进入创建好的Bucket进行文件上传,文件ACL选择公共读
点击上传的文件查看图片URL地址
将URL地址复制到测试类中req.setImageURL()方法中
最后运行java测试类得到结果:
-------- 车牌识别 --------------
actionName=RecognizeLicensePlate, requestId=BE48A5D1-5C1A-50D5-8865-919B5F611EE0, data={"data":{"plates":[{"confidence":0.99,"plateNumber":"浙A66666","plateType":"小型汽车","plateTypeConfidence":0.951348,"positions":[{"x":503,"y":184},{"x":504,"y":259},{"x":176,"y":262},{"x":176,"y":188}],"roi":{"h":78,"w":328,"x":176,"y":184}}]},"requestId":"BE48A5D1-5C1A-50D5-8865-919B5F611EE0"}



