最后编辑于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
可以体验以上功能的微信小程序
TOP
切换版块
百度的接口 框架是飞浆paddle 具体算法不清楚
楼主,我这边需要写一个实验报告,就是这个车型识别api后台所用到的算法是什么?有opencv吗?
base64还得再学习学习
会啥语言用啥语言就行。只是前提需要对HTTP URLENCODE JSON BASE64了解就行
可惜都是Java代码
很久不用Java了 都生疏了
最好是会Java哈 找代码就肯定会找了。
https://gitee.com/xshuai/ai/blob/master/AIDemo/src/main/java/com/xs/common/image/ImageAPI.java
如果没有 请自行添加到里面即可 只是一个普通的常量
请问这个包com.xs.common.image.ImageAPI在哪里找啊
具体哪个接口。你用的什么语言?
请问{"error_code":"SDK102","error_msg":"read image file error"}报这个错误的原因是什么
代码都是开源的。你自己改就行。只不过我是通过Java后台去请求的接口
老师你好!我想定制一个图像识别小程序,你愿意做吗?
谢谢亲的建议
API调用就没什么可简化的了。你可以直接用百度封装的SDK.调用超简单。
是否可以再简化呢
原来需要这么多复杂的代码吖
目前百度没有这种融合识别的接口
如果图片是车、植物、动物以外的东西,程序是会识别成较为相似的一种还是会有显示识别不出来呢?
目前接口不支持统计数量。如果需要你可以看看easydl的物体检测哦
楼主问下你这个动物识别的代码可以识别牛吗?就是相同物种的牛有5头可以区分吗?
谢谢作者,实用的文章^-^