百度图像识别SDK实验
软件构造实验作业
实验名称:百度图像识别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包并添加进来。

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

百度图像识别拥有多种功能,提供多场景图像识别,为我们的生活带来更多便利,把更多简单重复的工作交给机器去做,解放劳动力。
任务三:完成动物识别,自行拍摄动物图片进行上传并查看结果


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


- 整理
代码:
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的编程开发。
百度图像识别SDK实验的更多相关文章
- Android使用百度定位SDK 方法及错误处理
之前我的项目中的位置定位使用的是基站方法,使用的Google提供的API,但是前天中午突然就不返回数据了,到网上搜了一下才知道,Google的接 口不提供服务了,基于时间紧迫用了百度现有的SDK,但是 ...
- 百度AI之百度图像识别java版本使用
百度AI之百度图像识别java版本使用\ 官网 http://ai.baidu.com/ 创建应用 查看 appid,appkey,sk 下载sdk https://ai.baidu.com/sdk# ...
- 【月入41万】Mono For Android中使用百度地图SDK
借助于Mono For Android技术,.Net开发者也可以使用自己熟悉的C#语言以及.Net来开发Android应用.由于Mono For Android把Android SDK中绝大部分类库都 ...
- GJM:Unity导入百度地图SDK [转载]
感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...
- iOS百度地图SDK集成详细步骤
1.iOS百度地图下载地址 http://developer.baidu.com/map/index.php?title=iossdk/sdkiosdev-download 根据需要选择不同的版本 ...
- 百度地图SDK
百度地图官方SDK文档 http://lbsyun.baidu.com/index.php?title=androidsdk 一.申请百度地图SDK 每一个app对应一个百度地图AK,百度地图 ...
- 百度地图SDK 遇到的问题及解决方案
目前项目工作中用到了百度地图sdk,遇到了不少问题,在此记录一下,顺便吐槽下希望百度能把这地图sdk做的更好用一点. 1,开发环境, Xcode6.0 (6A313) + 百度地图 iOS SDK v ...
- Android Studio集成百度地图SDK
1.建议先阅读百度地图官方的继承指南,针对了Eclipse和Android Studio. 百度官方集成指南 2.下载百度地图SDK Android SDK v4.1.1 下载有两种: 1.一键下载( ...
- iOS开发之引用百度地图SDK(一)-----------SDK开发指南
(void)viewWillAppear:(BOOL)animated { [_mapView viewWillAppear]; _mapView.delegate = self; // 此处记得不用 ...
随机推荐
- JZ-014-链表中倒数第 K 个结点
链表中倒数第 K 个结点 题目描述 输入一个链表,输出该链表中倒数第k个结点. 题目链接: 链表中倒数第 K 个结点 代码 /** * 标题:链表中倒数第 K 个结点 * 题目描述 * 输入一个链表, ...
- 【一周聚焦】 联邦学习 arxiv 2.16-3.10
这是一个新开的每周六定期更新栏目,将本周arxiv上新出的联邦学习等感兴趣方向的文章进行总结.与之前精读文章不同,本栏目只会简要总结其研究内容.解决方法与效果.这篇作为栏目首发,可能不止本周内容(毕竟 ...
- tensorflow源码解析之common_runtime-executor-上
目录 核心概念 executor.h Executor NewLocalExecutor ExecutorBarrier executor.cc structs GraphView ExecutorI ...
- vue-cli项目创建步骤
vue-cli项目创建步骤: 1.cmd打开命令行窗口 2.输入cnpm install vue-cli -g,然后回车等待(想在哪个目录建立vue项目就要在进入到对应目录再输入命令) 3.安装结束后 ...
- MATLAB绘制三角网及三维网线
今天博主给大家介绍一些比较常见的可视化操作,绘制三角网及三维网线. 三角网是由一系列连续三角形构成的网状的平面控制图形,是三角测量中布设连续三角形的两种主要扩展形式,同时向各方向扩展而构成网状,优点为 ...
- Spring Boot 进行优雅的字段校验
Controller层 VS Service层 一般推荐与业务无关的放在Controller层中进行校验,而与业务有关的放在Service层中进行校验. 那么如何将参数校验写的优雅美观呢,如果都是if ...
- Redis 使用规范
Redis 使用规范围绕如下几个纬度展开: 键值对使用规范: 命令使用规范: 数据保存规范: 运维规范. 键值对使用规范 有两点需要注意: 好的 key 命名,才能提供可读性强.可维护性高的 key, ...
- JavaWeb 03_创建servlet项目(详细)
一.创建web项目 1. File--New--Project 2. 设置项目相关信息 3. 设置项目名称及工作空间 4. web项目目录结构如下 二.Servlet的实现 1. 新建包---类 ...
- linux下查看文件编码及修改编码介绍
1.在Vim中可以直接查看文件编码:set fileencoding即可显示文件编码格式.如果你只是想查看其它编码格式的文件或者想解决用Vim查看文件乱码的问题,那么你可以在~/.vimrc 文件中添 ...
- luoguP6624 [省选联考 2020 A 卷] 作业题(莫比乌斯反演,矩阵树定理)
luoguP6624 [省选联考 2020 A 卷] 作业题(莫比乌斯反演,矩阵树定理) Luogu 题外话: Day2一题没切. 我是傻逼. 题解时间 某种意义上说刻在DNA里的柿子,大概是很多人学 ...