纪录一下我小学期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. tp5--路由的使用(初级)

    在配置文件夹下的route.php文件配置路由: 控制器: 运行结果:

  2. 2019-2020-1 20199329《Linux内核原理与分析》第八周作业

    <Linux内核原理与分析>第八周作业 一.本周内容概述: 理解编译链接的过程和ELF可执行文件格式 编程练习动态链接库的两种使用方式 使用gdb跟踪分析一个execve系统调用内核处理函 ...

  3. QML-AES加解密小工具

    Intro 为了解码网课视频做的小工具,QML初学者可以参考一下. 项目地址 Todo 在插入新条目时,ListView不会自动根据section进行重排,因此出现同一个文件夹重复多次的现象.目测强行 ...

  4. CSAPP Chapter 8:Exception Control Flow

    prcesssor在运行时,假设program counter的值为a0, a1, ... , an-1,每个ak表示相对应的instruction的地址.从ak到ak+1的变化被称为control ...

  5. java 接口实现关系下的多态

    2019独角兽企业重金招聘Python工程师标准>>> 多态: 父类的引用类型变量指向了子类的对象 或者 是接口类型的引用类型变量指向了接口实现类的对象. 实现关系下的多态:    ...

  6. inotify-tools的inotifywait工具用exclude 和 fromfile 排除指定后缀文件

    今天打算使用 inotify-tool 来对线上程序文件进行监控, 因为有些目录是缓存目录, 所以要进行排除, 同时还要排除一些指定的后缀的文件, 比如 .swp 等 需要递归监控的目录为: /tmp ...

  7. 解决Chrome插件安装时出现的“程序包无效”问题

    问题原因,新版的插件头部文件的修改,导致旧版的插件包无法使用,解决方式:解压. 1.把下载后的.crx扩展名的离线Chrome插件的文件扩展名改成.zip或者.rar(如果看不到Chrome插件的扩展 ...

  8. Codeforce-Ozon Tech Challenge 2020-A. Kuroni and the Gifts

    the i-th necklace has a brightness ai, where all the ai are pairwise distinct (i.e. all ai are diffe ...

  9. P4720【模板】扩展卢卡斯,P2183 礼物

    扩展卢卡斯定理 最近光做模板了 想了解卢卡斯定理的去这里,那题也有我的题解 然而这题和卢卡斯定理并没有太大关系(雾 但是,首先要会的是中国剩余定理和exgcd 卢卡斯定理用于求\(n,m\)大,但模数 ...

  10. IOS抓取与反抓取

    目录 IOS抓取基础知识 IOS抓取方式 iOS破解 模拟器 黑雷苹果模拟器 介绍 局限 改机软件 常用改机软件 检测 可更改属性 注入与Hook(越狱下实现作弊) 注入方式 Hook方式 重打包(非 ...