本文共 3750 字,大约阅读时间需要 12 分钟。
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三个哦
!!!注意:前提已经申请了该接口的内测权限哦
***************************不认识的蔬菜 水果 再也不用担心了哦***************************
接口请求参数:
必填参数:
image 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
非必填参数(最多返回20个结果集):
top_num返回结果top n,默认5。
食材识别-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.Ingredient;
import com.xs.util.baidu.Base64Util;
import com.xs.util.baidu.FileUtil;
import com.xs.util.baidu.HttpUtil;
/**
* 食材识别
* @author 小帅丶
*/
public class IngredientDemo {
public static void main(String[] args) throws Exception {
//返回字符串
//getDishBean("图片本地路径", "用户自己的token");
//返回java对象
Ingredient ingredient =getDishBean("G:/onion.jpg", "用户自己的token");
System.out.println(ingredient.getResult().get(0).getName());
}
/**
* 食材识别Demo
* @param imagePath
* @param accessToken
* @return 字符串
* @throws Exception
*/
public static String getDishResult(String imagePath,String accessToken) throws Exception{
byte[] imgData = FileUtil.readFileByBytes(imagePath);
String imgStr = Base64Util.encode(imgData);
String param = "image=" + URLEncoder.encode(imgStr,"UTF-8") + "&top_num=5";
// 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
String result = HttpUtil.post(ImageAPI.INGREDIENT_API, accessToken, param);
System.out.println(result);
return result;
}
/**
* 食材识别Demo
* @param imagePath
* @param accessToken
* @return Ingredient对象
* @throws Exception
*/
public static Ingredient getDishBean(String imagePath,String accessToken) throws Exception{
byte[] imgData = FileUtil.readFileByBytes(imagePath);
String imgStr = Base64Util.encode(imgData);
String param = "image=" + URLEncoder.encode(imgStr,"UTF-8") + "&top_num=5";
// 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
String result = HttpUtil.post(ImageAPI.INGREDIENT_API, accessToken, param);
Ingredient ingredient = JSON.parseObject(result,Ingredient.class);
System.out.println(result);
return ingredient;
}
}
示例图片:洋葱
返回的JSON字符串:
可以看到第一个结果是洋葱。还是很准确的哦。目前一个接口最多返回的个数是20
{
"log_id": 2774212668858437623,
"result_num": 20,
"result": [
{
"score": 0.91441977024078,
"name": "洋葱"
},
{
"score": 0.060188464820385,
"name": "大蒜"
},
{
"score": 0.024243704974651,
"name": "蒜"
},
{
"score": 0.00049944641068578,
"name": "大蒜子"
},
{
"score": 0.00014013581676409,
"name": "非果蔬食材"
},
{
"score": 0.000081263802712783,
"name": "香瓜"
},
{
"score": 0.000061208076658659,
"name": "山竹"
},
{
"score": 0.000057139866839861,
"name": "甜瓜"
},
{
"score": 0.000052144310757285,
"name": "金南瓜"
},
{
"score": 0.000035533703339752,
"name": "南瓜"
},
{
"score": 0.000023968033929123,
"name": "椰子"
},
{
"score": 0.000023934548153193,
"name": "柿子"
},
{
"score": 0.000015837053069845,
"name": "香瓜茄"
},
{
"score": 0.00001183443418995,
"name": "包心芥菜"
},
{
"score": 0.0000106100078483,
"name": "黄金蜜柚"
},
{
"score": 0.000010167963409913,
"name": "柚子"
},
{
"score": 0.0000074910885814461,
"name": "黄河蜜"
},
{
"score": 0.0000067228374973638,
"name": "榛子"
},
{
"score": 0.000006047389433661,
"name": "板栗"
},
{
"score": 0.0000054099632507132,
"name": "伊丽莎白瓜"
}
]
}
返回字段说明:
log_id否uint64唯一的log id,用于问题定位
result否result()食材识别结果数组
+name否string食材名称,示例:洋葱
+score否double置信度,示例:0.5321
如何获取AccessToken:http://ai.baidu.com/forum/topic/show/496505
官网文档中心:http://ai.baidu.com/docs#/ImageClassify-API/top
微信小程序即将上线食材识别哦
小程序码地址:https://ai.bdstatic.com/file/4392D0B82F6141A180288A9D90501418
转载地址:https://blog.csdn.net/weixin_39817176/article/details/114534027 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!