没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
基于百度云AI开发车型识别车牌识别详解
基于百度云AI开发车型识别车牌识别详解
1.创建百度AI应用
2.通过Access_token密码调用百度AI接口(车型识别)
3.Java客户端AipImageClassifyClient调用AI接口
4.车型识别接口说明
5.Java后端Controller层接收图片
6.Java后端Service层访问AI接口
7.基于VUE的前端开发车牌识别和车型识别
8.总结与展望
1.创建百度AI应用
进入百度AI官网 https://ai.baidu.com/ ,点击右上角控制台,用百度账号登录。如果没有百度账号,需要首先
创建一个百度账号。
在控制台可以看到各种百度提供的AI应用接口。找到需要的应用接口,点进去可以创建一个相应的应用。
图像识别提供一个组合API接口,支持多种垂类识别服务的灵活组合调用。
然后会提供给该应用一个API Key 和Secret Key,它是我们调用接口必须的两个参数。
以下是本次开发中用到的车型识别的应用。百度AI的车牌识别需要另外申请一个应用。需要注意的是不同的应用
有不同的AppID等参数。
2.通过Access_token密码调用百度AI接口(车型识别)
车型识别功能检测图片中的车辆,识别具体车型,包括车辆品牌体型号、颜色、年份、位置信息。
车辆识别为例。它的请求url为: https://aip.baidubce.com/rest/2.0/image-classify/v1/car
调用方式一定为POST。同时我们要在后面添加以下参数:
access_token :即前面获取的密码
在请求头中设置Content-Type参数
Content-Type :设置为application/x-www-form-urlencoded
在请求体Body中设置image图片的信息参数
1. image :图片信息参数,它是通过图片路径找到图片转为字节,然后经过Base64编码最后形成的字符串。如
下代码
//获取图片的路径
String filePath = Path;
//将图片转为字节数组
byte[] imgData = FileUtil.readFileByBytes(filePath);
//将图片字节数组转为Base64编码的字符串换
String imgStr = Base64Util.encode(imgData);
//将经过Base64编码的图片字符串转为UTF-8编码的字符串。可以直接传给image参数
String imgParam = URLEncoder.encode(imgStr, "UTF-8");
2. top_num :设置返回的信息的数量,默认5,因为车辆识别会得出多个结果,按几率得到,我们可以获取前n
个的数据
3. baike_num :设置返回的百科的信息数,默认不返回
3.Java客户端AipImageClassifyClient调用AI接口
以上方法是采用接口直接调用,下面的方法是使用JAVA客户端进行访问。首先需要安装
ImageClassify Java SDK ,可以在官方网站下载Java SDK压缩工具包。
然后,新建 AipImageClassifyClient , AipImageClassifyClient 是图像识别的Java客户端,为使用图像识别的
开发人员提供了一系列的交互方法。
用户可以参考如下代码新建一个 AipImageClassifyClient ,初始化完成后建议单例使用,避免重复获取
access_token :
在上面代码中,常量APP_ID在百度智能云控制台中创建,常量 API_KEY 与 SECRET_KEY 是在创建完毕应用后,
系统分配给用户的,均为字符串,用于标识用户,为访问做签名验证,可在AI服务控制台中的应用列表中查看。
4.车型识别接口说明
识别图片中车辆的具体车型,可识别常见的3000+款车型(小汽车为主),输出车辆的品牌型号、颜色、年份、
位置信息;支持返回对应识别结果的百度百科词条信息,包含词条名称、百科页面链接、百科图片链接、百科内
容简介。
当前只支持单主体识别,若图片中有多个车辆,则识别目标最大的车辆。
百度官方文档提供了调用的示例,提交参数的方式有本地路径和二进制数组。
public class Sample {
//设置APPID/AK/SK
public static final String APP_ID = "你的 App ID";
public static final String API_KEY = "你的 Api Key";
public static final String SECRET_KEY = "你的 Secret Key";
public static void main(String[] args) {
// 初始化一个AipImageClassifyClient
AipImageClassifyClient client = new AipImageClassifyClient(APP_ID, API_KEY,
SECRET_KEY);
// 可选:设置网络连接参数
client.setConnectionTimeoutInMillis(2000);
client.setSocketTimeoutInMillis(60000);
// 可选:设置代理服务器地址, http和socket二选一,或者均不设置
client.setHttpProxy("proxy_host", proxy_port); // 设置http代理
client.setSocketProxy("proxy_host", proxy_port); // 设置socket代理
// 调用接口
String path = "test.jpg";
JSONObject res = client.objectDetect(path, new HashMap<String, String>());
System.out.println(res.toString(2));
}
}
public void sample(AipImageClassify client) {
// 传入可选参数调用接口
HashMap<String, String> options = new HashMap<String, String>();
options.put("top_num", "3");
options.put("baike_num", "5");
// 参数为本地路径
String image = "test.jpg";
JSONObject res = client.carDetect(image, options);
System.out.println(res.toString(2));
// 参数为二进制数组
byte[] file = readFile("test.jpg");
剩余10页未读,继续阅读
资源评论
佳瑞Jarrett
- 粉丝: 11
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功