软件构造实验作业

实验名称:基于百度图像识别SDK开发植物识别系统

一、实验任务

任务一:配置百度图像识别Java SDK(占10%)

任务二:了解百度图像识别相关功能并进行总结(占20%)

任务三:基于Java Swing+AWT完成动物识别应用界面,自行拍摄动物图片进行上传并查看结果(占30%)

任务四:基于Java Swing+AWT完成植物识别应用界面,自行拍摄植物图片进行上传并查看结果(占30%)

实验总结:(占10%)

任务一:

首先在idea中创建一个maven项目,设置好目录等如下图

 

由于创建的是web项目,需要补齐并设置文件目录结果如下:

 

添加依赖并刷新:(版本号可在Maven Central Repository Search查看)

 

此时我们所需要的jar包已经通过maven导入项目中了,如下:

 

此时百度图像识别Java SDK已配置完成。

任务二:

在官网中我们可以看到百度AI平台为我们提供了许多功能,并对其进行了简单阐述。本次实验我们用到了其提供的动物识别接口和植物识别接口,通过下图可以得知该两种接口都属于细粒度图像识别(补充:简单来说细粒度图像识别就是比普通的图像识别(分类)再精细化一些。细化到某个动植物的种类、属性等。具体阐述可参考(10条消息) 细粒度图像识别_haima1998的博客-CSDN博客_细粒度图像识别这篇博客)我们可以看出这两种接口的图片编码后大小限额均为:base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,长宽比31以内)

 

任务三:

在官网的快速入门实例中,我们发现想要使用API的话,需要申请自己的App IDApi KeySecrect Key进入控制台并登录然后在菜单栏点击图像识别找到应用列表,如图:

 

点击创建应用,完善相关信息,创建完成后可看到相关信息,如下图:

 

创建类Plant然后根据给出的样例编写自己的代码(记得把APP_IDAPI_KEYSECRET_KEY都换成自己的,将创建应用后生成的东西按名称填入对应位置)

 

修改完的代码如下图:

package cn.com.yjw;

import com.baidu.aip.imageclassify.AipImageClassify;

import org.json.JSONObject;

import java.util.HashMap;

public class Anmail {

    public static final String APP_ID = "28069757";

    public static final String API_KEY = "3Aet6h547i72ML1KreOxov0y";

    public static final String SECRET_KEY = "LwMB9K7lvL9f06WcqPWU4YugkFalXnoC";

    public static void main(String[] args) {

        // 初始化一个AipImageClassify

        AipImageClassify client = new AipImageClassify(APP_ID, API_KEY, SECRET_KEY);

        // 调用接口

        Anmail.anmail(client);

    };

    public static void anmail(AipImageClassify client) {

        // 传入可选参数调用接口

        HashMap<String, String> options = new HashMap<String, String>();

        options.put("top_num", "3");

        options.put("baike_num", "5");

        // 参数为本地路径

        String image = "img/panada.jpg";

        JSONObject res = client.animalDetect(image, options);

        System.out.println(res.toString(2));

    }

}

 

 

至此功能已实现,只需要再做个界面即可:

 

任务四:

与任务三类似,只需要调用plant接口即可

package cn.com.yjw;

 

import com.baidu.aip.imageclassify.AipImageClassify;

import org.json.JSONObject;

import java.util.HashMap;

public class Plant {//设置APPID/AK/SK

    public static final String APP_ID = "28069757";

    public static final String API_KEY = "3Aet6h547i72ML1KreOxov0y";

    public static final String SECRET_KEY = "LwMB9K7lvL9f06WcqPWU4YugkFalXnoC";

    public static void main(String[] args) {

        // 初始化一个AipImageClassify

        AipImageClassify client = new AipImageClassify(APP_ID, API_KEY, SECRET_KEY);

        // 调用接口

      Plant.plant(client);

    };

    public static void plant(AipImageClassify client) {

        // 传入可选参数调用接口

        HashMap<String, String> options = new HashMap<String, String>();

        options.put("baike_num", "5");

        // 参数为本地路径

        String image = "img/duorou.jpg";

        JSONObject res = client.plantDetect(image, options);

        System.out.println(res.toString(2));

    }

    }

 

 

 

 

posted on 2022-10-30 21:28  辰逸1  阅读(22)  评论(0编辑  收藏  举报