百度智能云平台调用食物识别api Java实现
纪录一下我小学期2天花了20小时写的菜品识别java程序。
1.2. 百度智能云简介
1.2.1 百度图像识别服务
百度图像识别服务,基于深度学习及大规模图像训练,准确识别图片中的物体类别、位置、置信度等综合信息。
1.2.2 菜品识别
支持识别5万种菜品,适用于识别只含有单个菜品的图片,接口返回菜品的名称、置信度、卡路里、百科信息等综合信息。支持自建菜品图库,适用于识别含有多个菜品的图片,接口返回菜品的名称、位置、相关性等综合信息。
1.2.3 菜品识别应用场景
根据拍摄照片,识别图片中菜品名称,获取菜品参考卡路里含量和百科信息,可结合识别结果进一步提供饮食推荐、健康管理方案等相关功能,增强用户体验,广泛应用于餐饮娱乐类和健康管理类APP中。根据拍摄照片,识别图片中菜品名称和位置,提高结算效率,减少人工录入成本,广泛应用于餐饮行业的智能结算中。
1.2.4 菜品识别接口介绍
接口能力:该请求用于菜品识别。即对于输入的一张图片(可正常解码,且长宽比适宜),输出图片的菜品名称、卡路里信息、置信度。
请求格式:POST方式调用(Content-Type为application/x-www-form-urlencoded,然后通过urlencode格式化请求体)
返回格式:JSON格式
请求限制: 请求图片需经过base64编码:图片的base64编码指将一副图片数据编码成一串字符串,使用该字符串代替图像地址。您可以首先得到图片的二进制,然后用Base64格式编码即可。(图片的base64编码是不包含图片头的,如(data:image/jpg;base64), 请求格式支持:PNG、JPG、JPEG、BMP、GIF**,base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,长宽比3:1以内)
1.2.5 接口请求参数说明
参数 |
是否必选 |
类型 |
可选值范围 |
说明 |
image |
是 |
string |
- |
Base64编码字符串,以图片文件形式请求时必填。(支持图片格式:jpg,bmp,png,jpeg),图片大小不超过4M。最短边至少15px,最长边最大4096px。注意:图片需要base64编码、去掉编码头后再进行urlencode。 |
top_num |
否 |
unit32 |
- |
返回结果top n,默认5. |
filter_threshold |
是 |
float |
- |
默认0.95,可以通过该参数调节识别效果,降低非菜识别率. |
baike_num |
否 |
integer |
0 |
返回百科信息的结果数,默认不返回 |
1.2.6 接口返回参数说明
字段 |
是否必选 |
类型 |
说明 |
log_id |
是 |
uint64 |
唯一的log id,用于问题定位 |
result_num |
否 |
unit32 |
返回结果数目,及result数组中的元素个数 |
result |
否 |
array() |
菜品识别结果数组 |
+name |
否 |
string |
菜名,示例:鱼香肉丝 |
+calorie |
否 |
float |
卡路里,每100g的卡路里含量 |
+probability |
否 |
float |
识别结果中每一行的置信度值,0-1 |
+baike_info |
object |
否 |
对应识别结果的百科词条名称 |
++baike_url |
string |
否 |
对应识别结果百度百科页面链接 |
++image_url |
string |
否 |
对应识别结果百科图片链接 |
++description |
string |
否 |
对应识别结果百科内容描述 |
2 需求分析
2.1 程序简介
2.1.1 程序类型
本程序是用java编写的调用百度智能云平台图像识别接口的菜品识别软件。
2.1.2 程序使用方式
1.运行程序进入主页面,点击菜单栏的图像识别
图1-1 程序主界面
2.菜单栏展开
图1-2 主界面菜单栏
3.菜品图片识别
4.点击菜单栏的识别历史纪录,查看数据库中数据
图1-7 历史纪录显示
2.2 需求分析
2.2.1
程序数据流图
(1)图像识别功能实现数据流图2-1。
图2-1 图像识别功能实现数据流图
(2)程序操作流程图2-2。
图2-2 程序操作流程图据流图
2.2.2
程序功能需求
(1)图像识别
识别出用户提供的图片的菜名、卡路里、置信度、百科信息描述。
(2)历史纪录查询
显示识别过图像相关信息的历史纪录。
(3)数据库菜品信息检索
输入菜名查询出所查菜的相关信息。
3 程序设计
3.1 总体设计
程序分为3个大模块,分别是图像识别模块,历史纪录查询模块,数据库菜品信息检索,下图3-1是菜品识别程序的程序与模块的关系:
图3-1
菜品识别程序结构图
3.2 图像识别模块设计
设定返回菜品数据为两条,选择第一条的菜名、卡路里、置信度、百科信息和第二条的菜名。
左边4行2列的网格布局用来显示四条文本信息,右边的画布用来显示加载后的图像和百科信息。最底下为1行4列的网格布局,显示、退出按钮和拖拽提示标签和实现接受拖拽图片后显示图片路径的文本框。
点击显示会调用文件选择器。通过点击显示或者直接拖拽图片到文本框都可以通过获得图片的路径来获得图片的信息。
将图片信息通过图像识别接口用POST方式上传到百度智能云平台的图像识别服务得到JSON格式的字符串。将JSON格式的字符串利用阿里的fastjson库转换字符串,获得想要格式的信息存到控件中。
3.3 历史纪录模块设计
历史纪录模块界面的主容器采用3行1列的网格布局,第一行显示历史纪录标签,第二行用JtextArea控件来存放从数据库获取的指定列的信息,第三行添加显示和退出按钮。
3.4 数据库菜品信息检索模块
通过输入菜品名称对指定列在数据库中查询符和的行,并用JtextArea存放菜品的百科信息。
4 菜品识别程序实现
4.1 程序开发环境介绍
本程序使用的是Eclipse201906版本开发,语言使用的是Java,JDK版本为11。在Windows10平台上完成开发与测试。
4.2 图像识别模块实现
5 软件测试
5.1 图像识别测试
5.1.1 文件选择测试
点击图像识别页面的显示调用文件选择器:
图5-1 文件选择测试
5.1.2 图像拖拽测试
拖拽图像进文本框加载图像,并在文本框显示图像路径信息:
图5-2 拖拽加载图片测试
5.1.3 图像识别结果测试
拖拽图片至文本框或者点击显示调用文件选择器加载图片,上传图片信息,将返回结果显示在空间中
图5-3 图像识别结果测试
5.2 历史纪录显示测试
点击显示从数据中获取菜品识别的历史纪录
图5-4 历史纪录显示测试
5.3数据库菜品信息查询测试
输入菜品名称,点击查询,返回菜品相关信息。
图5-5 数据库菜品信息查询测试
参考文献
[1] 慕课教育研发中心.Java从入门到项目实践[M].北京:清华大学出版社,2018.
[2] 百度工程师.百度智能云文档-菜品识别[EB/OL]
.https://cloud.baidu.com/doc/IMAGERECOGNITION/s/Ajwvy2g51/,2019-06-28.
[3]liuyz60.JAVA图形界面,怎么让背景图片正好充满JFrame?[EB/OL]
. https://zhidao.baidu.com/question/1925865716690279987.html,2017-11-27.
[4]蒋固金.JAVA拖拽选择文件[EB/OL]
. https://blog.csdn.net/jianggujin/article/details/50569827,2016-01-23.
[5]阿朱__.从本地读取json文件 用alibaba--fastjson解析 jar包[EB/OL]
. https://blog.csdn.net/qq_41371858/article/details/84940854,2018-12-10.
[6]紫霜落枫.Java如何做出好看的本地文件选择器[EB/OL]
. https://zhidao.baidu.com/question/425294497293157012.html,2017-12-16.
[7]披Zhe羊皮De狼.Java中改变应用程序界面外观[EB/OL]. https://blog.csdn.net/u010995220/article/details/49847307,2015-11-15.
资源链接:https://download.csdn.net/my/uploads/1/1(待审核后更新)
百度智能云平台调用食物识别api Java实现的更多相关文章
- Java对接百度智能云人脸识别
------------------------->这篇文章就是自己做个笔记<------------------------- 首先登录or注册自己的百度智能云管理中心:https:// ...
- 利用百度智能云结合Python体验图像识别(转载来自qylruirui)
https://blog.csdn.net/qylruirui/article/details/94992917 利用百度智能云结合Python体验图像识别只要注册了百度账号就可以轻松体验百度智能云中 ...
- laravel7 百度智能云检测内容及图片
1:百度智能云,获取AppID,API Key,Secret Key https://console.bce.baidu.com/ai/?_=1642339692640&exraInfo=ai ...
- 百度智能云虚拟主机 Typecho 分类功能失效 | 开启伪静态地址
出现的问题 $this->is() 方法失效,无法正确判断 archive.category.tags 页面类型. 点击分类页面.归档页面时,虽然 URL 是正确的,但网页内容却是 index. ...
- laravel7 百度智能云检测图片是否合规
APP 文件下建一个Libs目录建一个BaiduService文件,需要检测引入进行调用即可 BaiduService文件内容如下 <?php namespace App\Libs; use A ...
- 用百度AI的OCR文字识别结合JAVA实现了图片的文字识别功能
第一步可定要获取百度的三个东西 要到百度AI网站(http://ai.baidu.com/)去注册 然后获得 -const APP_ID = '请填写你的appid'; -const API_KEY ...
- 百度智能(文本识别),API传图OC代码与SDK使用
百度智能中的文本识别中的身份证识别,有API方式和SDK方式 API方式 百度智能(文本识别),百度API传图没有提供OC的示例,这里提供一下 - (void)OCTest:(NSString*)to ...
- 百度 验证码识别API 使用
先到百度云申请文字识别API ,会给你一个API KEY和一个SECRET KEY,免费,一天最多500次请求. try: temp_url = 'https://aip.baidubce.com/o ...
- MUI框架-11-MUI前端 +php后台接入百度文字识别API
MUI框架-11-MUI前端 +php后台接入百度文字识别API 这里后台不止一种,Python,Java,PHP,Node,C++,C# 都可以 这里使用的是 php 来介绍,已经解决所有问题,因为 ...
随机推荐
- 0day学习笔记(3)Windows定位API引起的惨案(原理)
段选择器FS与TEB WinNT内核下内存采用保护模式,段寄存器的意义与实模式汇编下的意义不同.另外,FS存的是段选择子,而不是实模式下的高16位基地址. FS寄存器指向当前活动线程的TEB结构(线程 ...
- TIME_WAIT的危害与避免
time-wait的产生: 在TCP连接中四次挥手关闭连接时,主动关闭连接的一方(上图中时Client)会在发送最后一条ACK报文后维持一段时长2MSL(MSL指的是数据包在网络中的最大生存时间)的等 ...
- Linux 设置秘钥登录(SSH免密连接)
Secure Shell 协议,简称 SSH,是一种加密网络协议,用于客户端和主机之间的安全连接,并支持各种身份验证机制,目前最实用的身份验证机制就是基于密码的身份验证和基于公钥的身份验证两种.Lin ...
- 正则表达式(grep,awk,sed)和通配符
1. 正则表达式 1. 什么是正则表达式? 正则表达式就是为了处理大量的字符串而定义的一套规则和方法. 通过定义的这些特殊符号的辅助,系统管理员就可以快速过滤,替换或输出需要的字符串. Linux正则 ...
- Galera将死——MySQL Group Replication正式发布
2016-12-14 来源:InsideMySQL 作者:姜承尧 MySQL Group Replication GA 很多同学表示昨天的从你的全世界路过画风不对,好在今天MySQL界终于有大事情发生 ...
- 基于ONOS的T-SDN Super控制器,突破多域网络运营的难关
在法国尼斯举办的IIR WDM波分论坛(Next Generation Optical Networking)上,华为展示了T-SDN(Transport SDN,传送SDN)领域的众多新技术,其中T ...
- matlab混合编程向导(vc,vb,.net...)
一.matlab与vc混编 1.通过mcc将matlab的m文件转化为cpp,c文件或dll供vc调用: 这方面的实现推荐精华区Zosco和ljw总结的方法(x-6-1-4-3-1和2) ...
- pycharm(py 文件中添加作者、时间)
1.打开 Pycharm,点击 File,再找到 Settings... 2.选择 Editor ----> File and Code Templates ----> Python Sc ...
- 最长公共子序列(Longest common subsequence)
问题描述: 给定两个序列 X=<x1, x2, ..., xm>, Y<y1, y2, ..., yn>,求X和Y长度最长的公共子序列.(子序列中的字符不要求连续) 这道题可以 ...
- OpenCV 4下darknet修改
darknet的安装使用直接在官网上获取.https://pjreddie.com/darknet/ 但我用的是OpenCV4.1.1,make时会在image_opencv.cpp中有两个错误. 1 ...