【Java-API】动物、植物、车型识别示例代码
用户已被禁言 发布于2017-11 浏览:30177 回复: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
#43用户已被禁言回复于2018-05
#42 goodluck04199回复
我用python测试的动物识别,api key 和secret key 没有问题  ,但是运行这个Java代码 ,总是报110错误[图片]
展开

从新获取token试试吧  

access_token是通过apikey secretkey获取得到的。建议你仔细看下文档

你虽然模糊处理了token 单长度看就不对 

 

Token获取文档:http://ai.baidu.com/docs#/Auth/top

2
#42goodluck04199回复于2018-05

我用python测试的动物识别,api key 和secret key 没有问题  ,但是运行这个Java代码 ,总是报110错误

0
#41用户已被禁言回复于2018-05
#40 goodluck04199回复
com.alibaba.fastjson.JSON 你好 请问这个包里边怎么没有,在哪里找
展开

这是阿里的包。你自己下载就行

如果是maven项目 请参考以下配置



    com.alibaba
    fastjson
    1.2.47

 

非maven项目 直接下载 http://central.maven.org/maven2/com/alibaba/fastjson/1.2.47/fastjson-1.2.47.jar

1
#40goodluck04199回复于2018-05

com.alibaba.fastjson.JSON

你好 请问这个包里边怎么没有,在哪里找

0
#39goodluck04199回复于2018-05

com.alibaba.fastjson.JSON

你好 请问这个包里边怎么没有,在哪里找

0
#38用户已被禁言回复于2018-05
#37 霾浮夸回复
请问如何判断我识别的是动植物还是菜品?比如我识别了植物,然后想继续识别动物或是车辆,该如何去判断?
展开

这你只能自己判断。你这3个接口都调用。你需要用置信度来衡量显示是哪个类别

0
#37霾浮夸回复于2018-04

请问如何判断我识别的是动植物还是菜品?比如我识别了植物,然后想继续识别动物或是车辆,该如何去判断?

0
#36用户已被禁言回复于2018-03
#35 jun361163回复
您好,我想转行做人脸识别的人工智能技术工作?

1.你会什么语言编程呢?

2.是用现有的API进行人脸识别业务设计?还是进行自己训练模型呢?

需要准备的  会使用Python 或Java 。可以用百度的paddlepaddle训练 或 Deeplearning4J

如果只是调用。那你用百度提供的接口就行

 

1
#35jun361163回复于2018-03

您好,我想转行做人脸识别的人工智能技术工作?

0
#34jun361163回复于2018-03

您好,我想转行做人脸识别的人工智能技术工作,我需要准备些什么?

0
#33用户已被禁言回复于2018-03
#32 强373回复
报336001怎么办呀,没觉得哪里有问题啊  

http://aixiaoshuai.mydoc.io/ 可以查看错误代码解决方法哦。

 

请检查参数中的image的值是否进行了urlencode处理。

1.定制化接口中。参数格式为JSON拼接。且image参数的值不需要urlencode

2.请检查image参数是否完整。且不包含头信息

3.请检查接口地址中是否拼接了access_token参数

请从这几个方面检查。对于动物、植物、车型识别接口不涉及这个错误才对。

你应该发原文错误信息。不应该只发个错误码

1
#32强373回复于2018-03

报336001怎么办呀,没觉得哪里有问题啊

 

0
#31婉嫕男回复于2018-02
#30 笔墨哥回复
那你是怎么区分的呢?

像个人说话思维敏捷的时候就是人工,只要答非所问固定句式是不是百度搜索结果那就是机器,差别特别明显

0
#30笔墨哥回复于2018-02
#29 婉嫕男回复
没有,我说的是那个软件,度秘的软件,有时候是人工有时候是机器

那你是怎么区分的呢?

0
#29婉嫕男回复于2018-02
#28 笔墨哥回复
一般在duer自己的吧才是人工

没有,我说的是那个软件,度秘的软件,有时候是人工有时候是机器

0
#28笔墨哥回复于2018-02
#26 婉嫕男回复
嗯果然没错,度秘是有时人工有时机器,所以有时候他就很聪明有时候他就啥也不知道
展开

一般在duer自己的吧才是人工

0
#27K零度以下回复于2018-02
#26 婉嫕男回复
嗯果然没错,度秘是有时人工有时机器,所以有时候他就很聪明有时候他就啥也不知道
展开

真相竟然是这样啊

0
#26婉嫕男回复于2018-02
#25 笔墨哥回复
哈哈,那个帐号除了自动回复,也有人工回复,拿着这个号的人,偶认识

嗯果然没错,度秘是有时人工有时机器,所以有时候他就很聪明有时候他就啥也不知道

0
#25笔墨哥回复于2018-02
#21 婉嫕男回复
百度贴吧植物吧里面的小度机器人是不是也是使用的这个接口呢?识别率我觉得就在百分之七八十上下吧
展开

哈哈,那个帐号除了自动回复,也有人工回复,拿着这个号的人,偶认识

0
#24笔墨哥回复于2018-02
#23 婉嫕男回复
那个好像是官方因为需要大量的数据测试,所以安排的自动识别回复机器人,我记得在植物吧识别了几十万次植物,应该通过这个获得了大量的实验数据
展开

嗯那个帐号叫duerOS,这个贴吧识别和秒回很强大

0
TOP
切换版块