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

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

运行程序输出结果如下:

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

  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值