首页 > 技术文章 > 百度图像识别SDK实验

linmob 2021-11-06 23:46 原文

软件构造实验作业

实验名称:百度图像识别SDK实验

班级:信1905-1      学号:20194171      姓名:常金悦       

 

一、 实验要求

每个步骤必须截图并说明

二、实验步骤

任务一:配置百度图像识别Java SDK

1、  在官方网站下载Java SDK压缩工具包。

网址SDK下载_文字识别SDK_语音识别SDK-百度AI开放平台 (baidu.com)

 

 

 

2、  将下载的aip-java-sdk-version.zip解压,在工程文件夹中新建lib文件夹,把解压后的jar包复制进去。

 

 

 

 

3、   在Eclipse右键“工程 -> Properties -> Java Build Path -> Add JARs”,选择上述jar包并添加进来。

 

 

 

 

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

百度图像识别相关功能

 

 

 

百度图像识别拥有多种功能,提供多场景图像识别,为我们的生活带来更多便利,把更多简单重复的工作交给机器去做,解放劳动力。

 

任务三:完成动物识别,自行拍摄动物图片进行上传并查看结果

  1. 百度识图代码(32条消息) 百度图像识别java使用笔记_m0_37566422的博客-CSDN博客

 

 

 

 

  1. 解析json文件代码使用Java读取JSON数据 - 愚蠢的程序员 - 博客园 (cnblogs.com)

 

 

 

 

  1. 将json写入json文件代码(32条消息) java中将简单的json数据写入文件_、风天行的博客-CSDN博客_java写json文件

 

 

 

  1. double转百分制(32条消息) Java中Double或Float类型,转百分数_一火的专栏-CSDN博客

 

 

 

  1. 整理

 

代码:

ReadJSON

package Sample;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.math.BigDecimal;

import java.text.DecimalFormat;

import java.text.NumberFormat;

 

import com.google.gson.JsonArray;

import com.google.gson.JsonIOException;

import com.google.gson.JsonObject;

import com.google.gson.JsonParser;

import com.google.gson.JsonSyntaxException;

 

public class ReadJSON {

    /**

    * 通过解析器将test.json转换成JsonObject

    */

      

    public static void main(String[] args) {

     

    //将 test.json 的数据转换成 JSON 对象

    //需要创建一个解析器,可以用来解析字符串或输入流

    JsonParser parser=new JsonParser();

     

    try {

     

    //创建一个JSON对象,接收parser解析后的返回值

    //使用parse()方法,传入一个Reader对象,返回值是JsonElement类型

    //因为要读取文件,所以传入一个FileReader

    //JsonObject是JsonElement的子类,所以需要强转

    //有异常抛出,使用 try catch 捕获

    JsonObject object=(JsonObject) parser.parse(new FileReader("test.json"));

     

    //先将两个外部的属性输出 category 和 pop

    //先 get 到名称(键),返回的是 JsonElement,再 getAs 转换成什么类型的值

    //依据 json 格式里的数据类型

    System.out.println("log_id="+object.get("log_id").getAsString());

   System.out.println("result_num="+object.get("result_num").getAsString());

     

    //接着读取test.json里的JSON数组,名称是languages(键)

    //创建一个JsonArray

    JsonArray array=object.get("result").getAsJsonArray();

    for (int i = 0; i < array.size(); i++) {

    //分隔线

    System.out.println("-----------------");

    //创建一个JsonObject,从array的下标获取,get() 返回JsonElement类型

    //这里不用强转,而用 getAsJsonObject() 进行转换

   

    JsonObject subObject=array.get(i).getAsJsonObject();

    NumberFormat fmt = NumberFormat.getPercentInstance();

    fmt.setMaximumFractionDigits(2);//最多两位百分小数,如25.23%

    String score=fmt.format(subObject.get("score").getAsDouble());

 

    System.out.println("score="+score);

    System.out.println("root="+subObject.get("root").getAsString());

    System.out.println("keyword="+subObject.get("keyword").getAsString());

     }

    } catch (JsonIOException e) {

        e.printStackTrace();

    } catch (JsonSyntaxException e) {

        e.printStackTrace();

    } catch (FileNotFoundException e) {

            e.printStackTrace();

    }

    }

}

 

 

 

 

Sample

package Sample;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.OutputStreamWriter;

import java.io.UnsupportedEncodingException;

import java.util.HashMap;

 

import javax.tools.Tool;

 

import org.json.JSONException;

import org.json.JSONObject;

import com.baidu.aip.imageclassify.AipImageClassify;

public class Sample {

    //设置APPID/AK/SK

    public static final String APP_ID = "11156716";

    public static final String API_KEY = "Wz0qmeT0SkzNeakFG9n5tLxY";

    public static final String SECRET_KEY = "ip1AP0GUe5qNG20f3zFFixHnaOg2uhjR";

 

    public static void main(String[] args) throws JSONException, IOException {

        //初始化

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

        //图片路径作为参数,此处使用相对路径,相对于项目根目录而言,即cat.jpg放在项目根目录下

        String path = "cat2.jpg";

        //返回JSON格式的数据

        JSONObject res = aic.advancedGeneral(path, new HashMap<String, String>());

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

       

 

        File file=new File("test.json");

        if(!file.exists())//判断文件是否存在,若不存在则新建

        {

            file.createNewFile();

        }

        FileOutputStream fileOutputStream=new FileOutputStream(file);//实例化FileOutputStream

        OutputStreamWriter outputStreamWriter=new OutputStreamWriter(fileOutputStream,"gbk");//将字符流转换为字节流

        BufferedWriter bufferedWriter= new BufferedWriter(outputStreamWriter);//创建字符缓冲输出流对象

        bufferedWriter.write(res.toString(2));//将格式化的jsonarray字符串写入文件

        bufferedWriter.flush();//清空缓冲区,强制输出数据

        bufferedWriter.close();//关闭输出流

 

        ReadJSON read=new ReadJSON();

        read.main(args);

    }

}

 

图片:

 

 

 

结果:

 

 

 

 

 

 

任务四:完成植物识别,自行拍摄植物图片进行上传并查看结果

代码:

ReadJSON

package Sample;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.math.BigDecimal;

import java.text.DecimalFormat;

import java.text.NumberFormat;

 

import com.google.gson.JsonArray;

import com.google.gson.JsonIOException;

import com.google.gson.JsonObject;

import com.google.gson.JsonParser;

import com.google.gson.JsonSyntaxException;

 

public class ReadJSON {

    /**

    * 通过解析器将test.json转换成JsonObject

    */

      

    public static void main(String[] args) {

     

    //将 test.json 的数据转换成 JSON 对象

    //需要创建一个解析器,可以用来解析字符串或输入流

    JsonParser parser=new JsonParser();

     

    try {

     

    //创建一个JSON对象,接收parser解析后的返回值

    //使用parse()方法,传入一个Reader对象,返回值是JsonElement类型

    //因为要读取文件,所以传入一个FileReader

    //JsonObject是JsonElement的子类,所以需要强转

    //有异常抛出,使用 try catch 捕获

    JsonObject object=(JsonObject) parser.parse(new FileReader("test.json"));

     

    //先将两个外部的属性输出 category 和 pop

    //先 get 到名称(键),返回的是 JsonElement,再 getAs 转换成什么类型的值

    //依据 json 格式里的数据类型

    System.out.println("log_id="+object.get("log_id").getAsString());

   System.out.println("result_num="+object.get("result_num").getAsString());

     

    //接着读取test.json里的JSON数组,名称是languages(键)

    //创建一个JsonArray

    JsonArray array=object.get("result").getAsJsonArray();

    for (int i = 0; i < array.size(); i++) {

    //分隔线

    System.out.println("-----------------");

    //创建一个JsonObject,从array的下标获取,get() 返回JsonElement类型

    //这里不用强转,而用 getAsJsonObject() 进行转换

   

    JsonObject subObject=array.get(i).getAsJsonObject();

    NumberFormat fmt = NumberFormat.getPercentInstance();

    fmt.setMaximumFractionDigits(2);//最多两位百分小数,如25.23%

    String score=fmt.format(subObject.get("score").getAsDouble());

 

    System.out.println("score="+score);

    System.out.println("root="+subObject.get("root").getAsString());

    System.out.println("keyword="+subObject.get("keyword").getAsString());

     }

    } catch (JsonIOException e) {

        e.printStackTrace();

    } catch (JsonSyntaxException e) {

        e.printStackTrace();

    } catch (FileNotFoundException e) {

            e.printStackTrace();

    }

    }

}

 

Sample

package Sample;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.OutputStreamWriter;

import java.io.UnsupportedEncodingException;

import java.util.HashMap;

 

import javax.tools.Tool;

 

import org.json.JSONException;

import org.json.JSONObject;

import com.baidu.aip.imageclassify.AipImageClassify;

public class Sample {

    //设置APPID/AK/SK

    public static final String APP_ID = "11156716";

    public static final String API_KEY = "Wz0qmeT0SkzNeakFG9n5tLxY";

    public static final String SECRET_KEY = "ip1AP0GUe5qNG20f3zFFixHnaOg2uhjR";

 

    public static void main(String[] args) throws JSONException, IOException {

        //初始化

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

        //图片路径作为参数,此处使用相对路径,相对于项目根目录而言,即cat.jpg放在项目根目录下

        String path = "rose.jpg";

        //返回JSON格式的数据

        JSONObject res = aic.advancedGeneral(path, new HashMap<String, String>());

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

       

 

        File file=new File("test.json");

        if(!file.exists())//判断文件是否存在,若不存在则新建

        {

            file.createNewFile();

        }

        FileOutputStream fileOutputStream=new FileOutputStream(file);//实例化FileOutputStream

        OutputStreamWriter outputStreamWriter=new OutputStreamWriter(fileOutputStream,"gbk");//将字符流转换为字节流

        BufferedWriter bufferedWriter= new BufferedWriter(outputStreamWriter);//创建字符缓冲输出流对象

        bufferedWriter.write(res.toString(2));//将格式化的jsonarray字符串写入文件

        bufferedWriter.flush();//清空缓冲区,强制输出数据

        bufferedWriter.close();//关闭输出流

 

        ReadJSON read=new ReadJSON();

        read.main(args);

    }

}

图片:

 

 

 

 

结果:

 

 

 

 

三、实验总结

这次实验还算简单,但也确实考验我们的读代码并和运用代码的能力,也启发我对于java的编程开发。

 

 

推荐阅读