欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java实现百度识图后台

程序员文章站 2024-02-26 10:02:10
...

1.百度识图
相信大家或许没对接过,但是肯定用过识图的功能,上个官网网址
https://ai.baidu.com/ai-doc/IMAGERECOGNITION/Nk3bcxfzd

说明一下 他这个例子包含两种方式
第一种

java实现百度识图后台
第二种
网址 https://ai.baidu.com/ai-doc/IMAGERECOGNITION/7k3bcxdn8
java实现百度识图后台
实现的时候看了一下两种的区别
(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就好
java实现百度识图后台

(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,百度识图,实现

相关标签: java 图像识别