java实现百度识图后台
1.百度识图
相信大家或许没对接过,但是肯定用过识图的功能,上个官网网址
https://ai.baidu.com/ai-doc/IMAGERECOGNITION/Nk3bcxfzd
说明一下 他这个例子包含两种方式
第一种
第二种
网址 https://ai.baidu.com/ai-doc/IMAGERECOGNITION/7k3bcxdn8
实现的时候看了一下两种的区别
(1)写法不同
第一种不需要写什么url,用下载的jar里面的方法直接使用
第二种比较麻烦,调用url要自己写,还要获取token什么的
(2)传参方式
第一种相对于第二种需要多传一个APP_ID
我自己用的第一种,比较简单,也好理解吧
2.对接百度识图sdk
第一步
下载jar包 maven地址 https://search.maven.org/search?q=aip
版本自己选择
<dependency>
<groupId>com.baidu.aip</groupId>
<artifactId>java-sdk</artifactId>
<version>${version}</version> //版本通过maven查询出来,填写
</dependency>
第二步
开始整代码,github官方地址 https://github.com/Baidu-AIP/java-sdk
我自己的demo
public class Sample {
//设置APPID/AK/SK
public static final String APP_ID = "";
public static final String API_KEY = "";
public static final String SECRET_KEY = "";
public static void main(String[] args) {
// 初始化一个AipImageClassify
AipImageClassify client = new AipImageClassify(APP_ID, API_KEY, SECRET_KEY);
// 可选:设置网络连接参数
client.setConnectionTimeoutInMillis(2000);
client.setSocketTimeoutInMillis(60000);
// 可选:设置代理服务器地址, http和socket二选一,或者均不设置
// client.setHttpProxy("proxy_host", proxy_port); // 设置http代理
// client.setSocketProxy("proxy_host", proxy_port); // 设置socket代理
// 调用接口
HashMap<String, String> options = new HashMap<String, String>();
options.put("baike_num", "5"); //返回百科信息的结果
options.put("custom_lib", "false");
// 参数为本地路径
String image = "E:\\360MoveData\\Users\\wy\\Desktop\\369.png";
JSONObject res = client.logoSearch(image, options);
System.out.println(res.getJSONArray("result").toString());
}
}
把对应的 APP_ID API_KEY SECRET_KEY 写上值,本地路径修改后,调用就成功了,返回结果
{
"result": [
{
"probability": 0.90460052006487,
"name": "阿迪达斯三叶草",
"location": {
"top": 378,
"left": 99,
"width": 556,
"height": 226
},
"type": 1
},
{
"probability": 0.74779063683969,
"name": "阿迪达斯",
"location": {
"top": 78,
"left": 102,
"width": 558,
"height": 559
},
"type": 0
},
{
"probability": 0.1956473734387,
"name": "阿迪达斯",
"location": {
"top": 78,
"left": 102,
"width": 558,
"height": 559
},
"type": 1
}
],
"log_id": 6768713851368170883,
"result_num": 3
}
识图分类以及返回结果值说明,请自行查看官方api,不在这解释了
3.总结
(1)JSONObject 获取里面key的值,直接getxxx,里面写返回值的key就好
(2)我启动appication的时候发生报错,LoggerFactory is not a Logback LoggerContext but Logback,具体解决方法在我另一篇文章里面
https://blog.csdn.net/m0_37712637/article/details/106524994
(3)官方api里面写的大概都是填写本地路径,真实项目大概率图片不是本地的。解决方法,前端传这个照片文件过来,然后后端直接把文件转为二进制图像数据
byte[] file = mf.getBytes();
然后在调用百度识图里面对应的方法即可
OK,百度识图,实现