java实现调用百度图像识别API,批量识别车辆车型、颜色等信息

java实现调用百度图像识别API,批量识别车辆车型、颜色等信息


在需要大量识别车辆车辆信息时,我们可以调用百度AI开放平台提供的API接口来完成批量处理。在百度AI开放平台申请好账号,创建应用后,我们就可以根据百题提供的APP_ID,APP_KEY,SECRET_KEYl来调用api接口,根据返回的识别数据,提取出自己所需要的车辆车型、颜色等信息,下面是利用java所实现的过程。

首先,下载百度图像识别API提供的Java SDK,地址为Java SDK,将SDK中的四个jar包添加到依赖。

接下来,调用百度API进行车型识别的具体代码如下:

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import org.json.JSONArray;
import org.json.JSONObject;
import com.baidu.aip.imageclassify.AipImageClassify;
public class CarRecognition {
	//填入自己申请的AAP_ID APP_KEY SECRET_KEY
	public static final String APP_ID = "AAP_ID";
    public static final String API_KEY = "APP_KEY";
    public static final String SECRET_KEY = "SECRET_KEY";
	public static void main(String[] args) {
		AipImageClassify aic = new AipImageClassify(APP_ID, API_KEY, SECRET_KEY); 
    	sample(aic);                        //调用识别方法 
	}	
		
	public  static void sample(AipImageClassify client) {
		HashMap<String, String> options = new HashMap<String, String>();  // 传入可选参数调用接口
		String color = null;                //定义一个字符串用于后面存储车身颜色			
		String type = null;    				//定义一个字符串用于后面存储车辆型号
		
		options.put("top_num", "3");		//设置识别出的车型数量
		options.put("baike_num", "0");		//设置给出的结果中是否需要包含车辆的百度百科描述信息
		String path = "car\\";          	//需要识别的本地图片所在文件夹路径
		File file = new File(path); 		
		File[] files = file.listFiles();
		try {		
			BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File("result\\carInfo.txt")),"gbk"));//建一个输出流用于输出车辆识别结果信息
			bufw.write("文件名  车型1  车型2  车型3  颜色");    //首先在文档中写出表头,使用$符号分割方便后期将txt文档数据导入excel中做分割
			bufw.newLine();
			for(int i=0;i<files.length;i++) {
				System.out.println(files[i].getName());	    //打印一下当前正在处理的图片名称,方便看进度
				String image = files[i].getAbsolutePath();  //获取本地图片的绝对路径
				bufw.write(files[i].getName()+" ");			//第一项数据为文件名
				JSONObject res = client.carDetect(image, options);  //获取调用API接口所获取的车辆信息识别数据res,格式为JSONobject
				//下面进行JSONobjec数据的解析,提取出识别出的车型、颜色信息
				JSONArray results = res.getJSONArray("result");	 	//将返回的JSONObject中result数组的转化成JSONarray,下面利用循环分别获得每一种车型结果数据		
				for(int j = 0;j<results.length();j++) {
					JSONObject obj = (JSONObject)results.get(j);	//将JSONOarray中第j个JSONObject数据拿出
					type = (String) obj.get("name");				//利用键“name”获取车型值
					bufw.write(type+" ");
				}
				color = (String) res.get("color_result");			//利用键“color_result”获取返回的JSONObject中车辆颜色信息值
				bufw.write(color);
				bufw.newLine();	
				bufw.flush();
			} 		
			bufw.flush();
			bufw.close();	
		}
		catch (IOException e) {		
			e.printStackTrace();
		}		
	}
}

示例:我们从网上找了一本田思域的照片:

运行程序输出结果如下:

识别结果中,排在第一位的就是可能性最大的车型。

Java OpenCV 车牌识别是一种利用Java编程语言结合OpenCV(开源计算机视觉库)来实现车牌识别技术。车牌识别是计算机视觉领域的一个重要应用,可以用于智能交通系统、停车场管理、违章监控等场景。 Java作为一种跨平台的编程语言,具有广泛的应用范围和强大的编程能力。而OpenCV是一个强大的计算机视觉库,提供了丰富的图像处理和分析功能。结合Java和OpenCV,可以实现车牌图片的获取、预处理、特征提取和模式匹配等步骤,最终实现车牌的自动识别。 具体来说,实现Java OpenCV 车牌识别可以按照以下步骤进行: 1. 车牌图片获取:利用Java的图像处理库,读取车辆图像或者视频帧,并提取出车牌区域。 2. 图像预处理:对获取的车牌区域进行图像预处理,包括灰度化、二值化、去除噪声等操作,以提高车牌字符的辨识度。 3. 字符分割:将预处理后的车牌区域进行字符分割,提取出单个字符。 4. 特征提取:对提取出的字符进行特征提取,例如利用轮廓、颜色等特征来描述字符。 5. 字符识别:利用机器学习或者模式匹配的方法,将提取的字符与预先训练好的字符模板进行比对,从而实现字符的识别。 6. 结果输出:将识别的字符进行整合,输出最终的车牌号码。 当然,以上仅是车牌识别的基本步骤,具体实现还需根据实际情况和需求进行优化和改进。而Java OpenCV 车牌识别技术的应用领域广泛,有着重要的实际意义,在智能交通和安全监控领域具有很大的应用潜力。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值