【Java-API】动物、植物、车型识别示例代码
用户已被禁言 发布于2017-11 浏览:29824 回复:61
3
收藏
最后编辑于2020-06

论坛亲们给了个新名称: 7叔  Seven Uncle

图像识别部分接口Java-API调用示例代码

https://gitee.com/xshuai/ai/不是完整的web项目大家没必要下载运行。复制|下载相关代码即可

  • 准备工作 已经创建了图像识别应用并且拿到apikey sercetkey得到AccessToken
  • 代码中所用到的Java对象类所在目录https://gitee.com/xshuai/ai/tree/master/AIDemo/src/main/java/com/xs/pojo/image
  • 代码中所用到的工具类 https://gitee.com/xshuai/ai/tree/master/AIDemo/src/main/java/com/xs/util/baidu 只需要Base64Util FileUtil HttpUtil三个哦
  • 需要用到的fastjson 如果是maven项目


    com.alibaba
    fastjson
    1.2.47

  • 需要用到的fastjson 如果不是maven项目
http://central.maven.org/maven2/com/alibaba/fastjson/1.2.47/fastjson-1.2.47.jar

 

  • 别-JavaAPI示例代码
package com.xs.image;

import java.net.URLEncoder;

import com.alibaba.fastjson.JSON;
import com.xs.common.image.ImageAPI;
import com.xs.pojo.image.Animal;
import com.xs.pojo.image.Plant;
import com.xs.util.baidu.Base64Util;
import com.xs.util.baidu.FileUtil;
import com.xs.util.baidu.HttpUtil;

/**
 * 动物识别Demo
 * @author 小帅丶
 *
 */
public class AnimalDemo {
	public static void main(String[] args) throws Exception {
		//返回字符串
//		String result = getAnimalResult("G:/animal.jpg", "24.509012e6b7fd242cff7557c13dc436de.2592000.1512873097.282335-10131029");
//		System.out.println(result);
		//返回java对象
		Animal plant = getAnimalBean("图片路径", "自己应用apikey&sercetkey生成的AccessToken");
		System.out.println(plant.getResult().get(0).getName());
	}
	/**
	 * 动物识别Demo
	 * @param imagePath
	 * @param accessToken
	 * @return 字符串
	 * @throws Exception
	 */
	public static String getAnimalResult(String imagePath,String accessToken) throws Exception{
		byte[] imgData = FileUtil.readFileByBytes(imagePath);
        String imgStr = Base64Util.encode(imgData);
		String param = "image=" + URLEncoder.encode(imgStr,"UTF-8");
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
		String result = HttpUtil.post(ImageAPI.ANIMAL_API, accessToken, param);
        System.out.println(result);
        return result;
	}
	/**
	 * 动物识别Demo
	 * @param imagePath
	 * @param accessToken
	 * @return LOGO对象
	 * @throws Exception
	 */
	public static Animal getAnimalBean(String imagePath,String accessToken) throws Exception{
		byte[] imgData = FileUtil.readFileByBytes(imagePath);
        String imgStr = Base64Util.encode(imgData);
		String param = "image=" + URLEncoder.encode(imgStr,"UTF-8");
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
		String result = HttpUtil.post(ImageAPI.ANIMAL_API, accessToken, param);
		Animal animal = JSON.parseObject(result,Animal.class);
        System.out.println(result);
        return animal;
	}
}
  • 别-JavaAPI示例代码
package com.xs.image;

import java.net.URLEncoder;

import com.alibaba.fastjson.JSON;
import com.xs.common.image.ImageAPI;
import com.xs.pojo.image.Plant;
import com.xs.util.baidu.Base64Util;
import com.xs.util.baidu.FileUtil;
import com.xs.util.baidu.HttpUtil;

/**
 * 植物识别
 * @author 小帅丶
 *
 */
public class PlantDemo {
	public static void main(String[] args) throws Exception {
		//返回字符串
//		String result = getPlantResult("图片路径", "自己应用apikey&sercetkey生成的AccessToken");
//		System.out.println(result);
		//返回java对象
//		Plant plant = getPlantBean("图片路径", "自己应用apikey&sercetkey生成的AccessToken");
//		System.out.println(plant.getResult().get(0).getName());
	}
	/**
	 * 植物识别Demo
	 * @param imagePath
	 * @param accessToken
	 * @return 字符串
	 * @throws Exception
	 */
	public static String getPlantResult(String imagePath,String accessToken) throws Exception{
		byte[] imgData = FileUtil.readFileByBytes(imagePath);
        String imgStr = Base64Util.encode(imgData);
		String param = "image=" + URLEncoder.encode(imgStr,"UTF-8");
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
		String result = HttpUtil.post(ImageAPI.PLANT_API, accessToken, param);
        System.out.println(result);
        return result;
	}
	/**
	 * 植物识别Demo
	 * @param imagePath
	 * @param accessToken
	 * @return LOGO对象
	 * @throws Exception
	 */
	public static Plant getPlantBean(String imagePath,String accessToken) throws Exception{
		byte[] imgData = FileUtil.readFileByBytes(imagePath);
        String imgStr = Base64Util.encode(imgData);
		String param = "image=" + URLEncoder.encode(imgStr,"UTF-8");
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
		String result = HttpUtil.post(ImageAPI.PLANT_API, accessToken, param);
		Plant plant = JSON.parseObject(result,Plant.class);
        System.out.println(result);
        return plant;
	}
}
  • 别-JavaAPI示例代码
package com.xs.image;

import java.net.URLEncoder;

import com.alibaba.fastjson.JSON;
import com.xs.common.image.ImageAPI;
import com.xs.pojo.image.Animal;
import com.xs.pojo.image.CarMode;
import com.xs.util.baidu.Base64Util;
import com.xs.util.baidu.FileUtil;
import com.xs.util.baidu.HttpUtil;

/**
 * 车型识别Demo
 * @author 小帅丶
 *
 */
public class CarModelDemo {
	public static void main(String[] args) throws Exception {
		//返回字符串
//		String result = getCarModeResult("图片路径", "自己应用apikey&sercetkey生成的AccessToken");
//		System.out.println(result);
		//返回java对象
		CarMode plant = getCarModeBean("图片路径", "自己应用apikey&sercetkey生成的AccessToken");
		System.out.println(plant.getResult().get(0).getName());
	}
	/**
	 * 车型识别Demo
	 * @param imagePath
	 * @param accessToken
	 * @return 字符串
	 * @throws Exception
	 */
	public static String getCarModeResult(String imagePath,String accessToken) throws Exception{
		byte[] imgData = FileUtil.readFileByBytes(imagePath);
        String imgStr = Base64Util.encode(imgData);
		String param = "image=" + URLEncoder.encode(imgStr,"UTF-8");
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
		String result = HttpUtil.post(ImageAPI.CAR_API, accessToken, param);
        System.out.println(result);
        return result;
	}
	/**
	 * 车型识别Demo
	 * @param imagePath
	 * @param accessToken
	 * @return CarMode对象
	 * @throws Exception
	 */
	public static CarMode getCarModeBean(String imagePath,String accessToken) throws Exception{
		byte[] imgData = FileUtil.readFileByBytes(imagePath);
        String imgStr = Base64Util.encode(imgData);
		String param = "image=" + URLEncoder.encode(imgStr,"UTF-8");
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
		String result = HttpUtil.post(ImageAPI.CAR_API, accessToken, param);
		CarMode carMode = JSON.parseObject(result,CarMode.class);
        System.out.println(result);
        return carMode;
	}
}

 

如何获取AccessToken:http://ai.baidu.com/forum/topic/show/496505

官网文档中心:http://ai.baidu.com/docs#/ImageClassify-API/top

收藏
点赞
3
个赞
共61条回复 最后由用户已被禁言回复于2020-06
#66用户已被禁言回复于2020-06
#65 亂世妖魔回复
楼主,我这边需要写一个实验报告,就是这个车型识别api后台所用到的算法是什么?有opencv吗?
展开

百度的接口  框架是飞浆paddle 具体算法不清楚

1
#65亂世妖魔回复于2020-06

楼主,我这边需要写一个实验报告,就是这个车型识别api后台所用到的算法是什么?有opencv吗?

0
#64西南交大开源回复于2020-02
#63 用户已被禁言回复
会啥语言用啥语言就行。只是前提需要对HTTP URLENCODE JSON BASE64了解就行
展开

base64还得再学习学习

0
#63用户已被禁言回复于2020-02
#62 西南交大开源回复
可惜都是Java代码 很久不用Java了 都生疏了

会啥语言用啥语言就行。只是前提需要对HTTP URLENCODE JSON BASE64了解就行

1
#62西南交大开源回复于2020-02

可惜都是Java代码

很久不用Java了 都生疏了

0
#61用户已被禁言回复于2020-02
#60 chase0310回复
请问这个包com.xs.common.image.ImageAPI在哪里找啊
展开

最好是会Java哈 找代码就肯定会找了。

https://gitee.com/xshuai/ai/blob/master/AIDemo/src/main/java/com/xs/common/image/ImageAPI.java

如果没有 请自行添加到里面即可 只是一个普通的常量

0
#60chase0310回复于2020-02

请问这个包com.xs.common.image.ImageAPI在哪里找啊

1
#59用户已被禁言回复于2018-11
#58 wqymmc回复
请问{"error_code":"SDK102","error_msg":"read image file error"}报这个错误的原因是什么
展开

具体哪个接口。你用的什么语言?

1
#58wqymmc回复于2018-11

请问{"error_code":"SDK102","error_msg":"read image file error"}报这个错误的原因是什么

0
#57用户已被禁言回复于2018-11
#56 cqhdg17回复
老师你好!我想定制一个图像识别小程序,你愿意做吗?

代码都是开源的。你自己改就行。只不过我是通过Java后台去请求的接口

0
#56cqhdg17回复于2018-11

老师你好!我想定制一个图像识别小程序,你愿意做吗?

0
#55155******23回复于2018-11
#53 用户已被禁言回复
API调用就没什么可简化的了。你可以直接用百度封装的SDK.调用超简单。
展开

谢谢亲的建议

0
#53用户已被禁言回复于2018-11
#52 我就是九候回复
是否可以再简化呢

API调用就没什么可简化的了。你可以直接用百度封装的SDK.调用超简单。

1
#52我就是九候回复于2018-11

是否可以再简化呢

0
#50133******90回复于2018-11

原来需要这么多复杂的代码吖

0
#49用户已被禁言回复于2018-10
#48 lastAccomplice回复
如果图片是车、植物、动物以外的东西,程序是会识别成较为相似的一种还是会有显示识别不出来呢?
展开

目前百度没有这种融合识别的接口

1
#48lastAccomplice回复于2018-10

如果图片是车、植物、动物以外的东西,程序是会识别成较为相似的一种还是会有显示识别不出来呢?

0
#46用户已被禁言回复于2018-06
#45 huliangjava回复
楼主问下你这个动物识别的代码可以识别牛吗?就是相同物种的牛有5头可以区分吗?  
展开

目前接口不支持统计数量。如果需要你可以看看easydl的物体检测哦

1
#45huliangjava回复于2018-06

楼主问下你这个动物识别的代码可以识别牛吗?就是相同物种的牛有5头可以区分吗?

 

0
#44goodluck04199回复于2018-05
#43 用户已被禁言回复
从新获取token试试吧   access_token是通过apikey secretkey获取得到的。建议你仔细看下文档 你虽然模糊处理了token 单长度看就不对    Token获取文档:http://ai.baidu.com/docs#/Auth/top
展开

谢谢作者,实用的文章^-^

0
TOP
切换版块