【Java-API】动物、植物、车型识别示例代码
756665228 发布于2017-11 浏览:30178 回复: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条回复 最后由756665228回复于2020-06
#23婉嫕男回复于2018-02
#22 756665228回复
那就不太清楚了

那个好像是官方因为需要大量的数据测试,所以安排的自动识别回复机器人,我记得在植物吧识别了几十万次植物,应该通过这个获得了大量的实验数据

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

那就不太清楚了

0
#21婉嫕男回复于2018-02

百度贴吧植物吧里面的小度机器人是不是也是使用的这个接口呢?识别率我觉得就在百分之七八十上下吧

0
#20K零度以下回复于2018-01
#9 xinmiao10回复
现在在用植物识别 SDK, 调用SDK接口,识别时传入的是手机相册图片地址,有些图片接口会报 image format error ,有些图片识别正常,图片都是jpg格式的 ?    另外,现在的植物识别不是很准确, 有些图片没有植物也能返回数据,请问根据返回数据中 score 大于多少,才能认为是识别对了 ??
展开

我感觉植物识别成功率还好啊

0
#19K零度以下回复于2018-01
#6 笔墨哥回复
 这是打算做什么项目呀?

做着自己平时玩啊

0
#18用户已被禁言回复于2018-01
#17 wjunfeng2386回复
微信小程序在哪?名字是什么?

帖子最后面那个码扫码就行。用微信扫一扫即可。

1
#17wjunfeng2386回复于2018-01

微信小程序在哪?名字是什么?

0
#15用户已被禁言回复于2017-12
#14 p1094358629回复
那我看了您的应用,我们上传的图片,难道您是先把它下载到文件服务器 ,在进行解析的??
展开

我的应用就是直接把上传的图片保存进行识别。如果你非要url也没关系。自己再处理一步。如果是给的图片网络路径。那就自己再写一个http下载方法。直接获取流 转base64.再进行识别

1
#14p1094358629回复于2017-12
#13 用户已被禁言回复
要求是本地图片文件路径 不是图片文件的网络路径

那我看了您的应用,我们上传的图片,难道您是先把它下载到文件服务器 ,在进行解析的??

0
#13用户已被禁言回复于2017-12
#12 p1094358629回复
你好我遇到一个问题,是说java.io.FileNotFoundException: http://p.qpic.cn/pic_wework/2741948062/9a9ca993bd24e69ae31fc666b0da1059366043bb12781807/   如图所示,这个imagePath=http://p.qpic.cn/pic_wework/2741948062/9a9ca993bd24e69ae31fc666b0da1059366043bb12781807/ 但是说找不到这个文件.文件是通过微信发送到我的服务端的 [图片]
展开

要求是本地图片文件路径 不是图片文件的网络路径

1
#12p1094358629回复于2017-12

你好我遇到一个问题,是说java.io.FileNotFoundException: http://p.qpic.cn/pic_wework/2741948062/9a9ca993bd24e69ae31fc666b0da1059366043bb12781807/

 

如图所示,这个imagePath=http://p.qpic.cn/pic_wework/2741948062/9a9ca993bd24e69ae31fc666b0da1059366043bb12781807/

但是说找不到这个文件.文件是通过微信发送到我的服务端的

0
#11xinmiao10回复于2017-12
#10 用户已被禁言回复
菜品识别写的filter_threshold是0.95    image format error 这个具体问题找百度官方吧。提交你的log_id后台是可以查询到你传递的base64是否完整或者错误的 整体准确率不是很高。等待接口的迭代更新优化吧
展开

好吧, 百度不是大力发展AI 吗 , 找官方的人都找不到

0
#10用户已被禁言回复于2017-12
#9 xinmiao10回复
现在在用植物识别 SDK, 调用SDK接口,识别时传入的是手机相册图片地址,有些图片接口会报 image format error ,有些图片识别正常,图片都是jpg格式的 ?    另外,现在的植物识别不是很准确, 有些图片没有植物也能返回数据,请问根据返回数据中 score 大于多少,才能认为是识别对了 ??
展开

菜品识别写的filter_threshold是0.95  

 image format error 这个具体问题找百度官方吧。提交你的log_id后台是可以查询到你传递的base64是否完整或者错误的

整体准确率不是很高。等待接口的迭代更新优化吧

1
#9xinmiao10回复于2017-12

现在在用植物识别 SDK, 调用SDK接口,识别时传入的是手机相册图片地址,有些图片接口会报 image format error ,有些图片识别正常,图片都是jpg格式的 ? 

 

另外,现在的植物识别不是很准确, 有些图片没有植物也能返回数据,请问根据返回数据中 score 大于多少,才能认为是识别对了 ??

0
#8用户已被禁言回复于2017-11
#7 杨成璐回复
下载的jar包工具类不全 你能发一个你的jar包吗

工具类是百度提供的。Javabean对象是我自己封装的。你可以只需要返回String的。顶部给出了源代码地址。引入的相关你自己下载就行。不要下载整个项目。

工具类下载地址:http://aixiaoshuai.mydoc.io/?t=234826 只需要FileUtil Base64Util HttpUtil

 

 

1
#7杨成璐回复于2017-11

下载的jar包工具类不全 你能发一个你的jar包吗

0
#6笔墨哥回复于2017-11
#5 K零度以下回复
刚好做了这个

 这是打算做什么项目呀?

0
#5K零度以下回复于2017-11

刚好做了这个

0
#4用户已被禁言回复于2017-11
#3 笔墨哥回复
嗯~很不错的展示分享~

示例代码打个样。

0
#3笔墨哥回复于2017-11

嗯~很不错的展示分享~

1
TOP
切换版块