基于百度云AI开发车型识别车牌识别案例详解

关键字: 车牌识别 车型识别 百度AI SpringBoot Vue Java SDK

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压缩工具包。

在这里插入图片描述

然后,新建AipImageClassifyClientAipImageClassifyClient是图像识别的Java客户端,为使用图像识别的开发人员提供了一系列的交互方法。

用户可以参考如下代码新建一个AipImageClassifyClient,初始化完成后建议单例使用,避免重复获取access_token

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));
        
    }
}

在上面代码中,常量APP_ID在百度智能云控制台中创建,常量API_KEYSECRET_KEY是在创建完毕应用后,系统分配给用户的,均为字符串,用于标识用户,为访问做签名验证,可在AI服务控制台中的应用列表中查看。

4.车型识别接口说明

识别图片中车辆的具体车型,可识别常见的3000+款车型(小汽车为主),输出车辆的品牌型号、颜色、年份、位置信息;支持返回对应识别结果的百度百科词条信息,包含词条名称、百科页面链接、百科图片链接、百科内容简介。

当前只支持单主体识别,若图片中有多个车辆,则识别目标最大的车辆。

百度官方文档提供了调用的示例,提交参数的方式有本地路径和二进制数组。

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");
    res 
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

佳瑞Jarrett

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值