纪录一下我小学期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版本开发,语言使用的是JavaJDK版本为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实现的更多相关文章

  1. Java对接百度智能云人脸识别

    ------------------------->这篇文章就是自己做个笔记<------------------------- 首先登录or注册自己的百度智能云管理中心:https:// ...

  2. 利用百度智能云结合Python体验图像识别(转载来自qylruirui)

    https://blog.csdn.net/qylruirui/article/details/94992917 利用百度智能云结合Python体验图像识别只要注册了百度账号就可以轻松体验百度智能云中 ...

  3. laravel7 百度智能云检测内容及图片

    1:百度智能云,获取AppID,API Key,Secret Key https://console.bce.baidu.com/ai/?_=1642339692640&exraInfo=ai ...

  4. 百度智能云虚拟主机 Typecho 分类功能失效 | 开启伪静态地址

    出现的问题 $this->is() 方法失效,无法正确判断 archive.category.tags 页面类型. 点击分类页面.归档页面时,虽然 URL 是正确的,但网页内容却是 index. ...

  5. laravel7 百度智能云检测图片是否合规

    APP 文件下建一个Libs目录建一个BaiduService文件,需要检测引入进行调用即可 BaiduService文件内容如下 <?php namespace App\Libs; use A ...

  6. 用百度AI的OCR文字识别结合JAVA实现了图片的文字识别功能

    第一步可定要获取百度的三个东西 要到百度AI网站(http://ai.baidu.com/)去注册 然后获得 -const APP_ID = '请填写你的appid'; -const API_KEY ...

  7. 百度智能(文本识别),API传图OC代码与SDK使用

    百度智能中的文本识别中的身份证识别,有API方式和SDK方式 API方式 百度智能(文本识别),百度API传图没有提供OC的示例,这里提供一下 - (void)OCTest:(NSString*)to ...

  8. 百度 验证码识别API 使用

    先到百度云申请文字识别API ,会给你一个API KEY和一个SECRET KEY,免费,一天最多500次请求. try: temp_url = 'https://aip.baidubce.com/o ...

  9. MUI框架-11-MUI前端 +php后台接入百度文字识别API

    MUI框架-11-MUI前端 +php后台接入百度文字识别API 这里后台不止一种,Python,Java,PHP,Node,C++,C# 都可以 这里使用的是 php 来介绍,已经解决所有问题,因为 ...

随机推荐

  1. ApiPost的预执行脚本和后执行脚本

    ApiPost的预执行脚本和后执行脚本主要是用来定义变量.但是它们有什么区别呢? 预执行脚本 在当前接口发送请求前执行的脚本,可以理解为beforeSend的时候执行. 一般在这里,我们可以设置一些前 ...

  2. DEDE中自定义表单HTML 怎么写

    用DEDE嵌套网站时,有时我们需要添加自定义字段,而自定义字段的HTML样式如何设置呢? 功能地图(核心/频道模型/内容模型管理/)——普通文章的修改——字段管理——你的自定义字段的修改——最下面自定 ...

  3. /proc/[pid]/status

    http://man7.org/linux/man-pages/man5/proc.5.html /proc/[pid]/status Provides much of the information ...

  4. 利用python画出SJF调度图

    最先发布在csdn.本人原创. https://blog.csdn.net/weixin_43906799/article/details/105510046 SJF算法: 最短作业优先(SJF)调度 ...

  5. 鸟哥Linux私房菜(基础篇)——第五章:首次登入与在线求助 man page笔记

    1.X Winsows与文本模式的切换 ●[Ctrl] + [Alt] + [F1] ~ [F6] :文字接口登入 tty1 ~ tty6 终端机.        ●[Ctrl] + [Alt] + ...

  6. 【杂谈】从实现角度看ChannelFuture

    JDK中的Future特性 在介绍Netty的ChannelFuture之前,我们先来看看JDK中的Future是如何实现的.总的来说就是任务提交的时候会使用装饰器模式,将任务包装成一个FutureT ...

  7. 关于bash shell的理解

    Bash Shell 基本特性 1.命令选项参数的补全 补全选项,需要安装 bash-completion yum install -y bash-completion 2.快捷键 Ctrl + a ...

  8. Linux中的常用快捷键

    tab 命令或路径补全键,linux里面最有用的快捷键,如果tab不到路径或命令,就代表没有这个路径或者命令,还有可能是权限不对 ctrl+c 终止当前任务命令或程序 ctrl+d 退出当前用户环境, ...

  9. 2019-05-22 BTC走势分析

    转载于:https://juejin.im/post/5ce4adf5f265da1b8c195ff8

  10. mybatis源码学习(二):SQL的执行过程

    从上一篇文章中,我们了解到MapperMethod将SQL的执行交给了sqlsession处理.今天我们继续往下看处理的过程. SqlSession接口除了提供获取Configuration,Mapp ...