纪录一下我小学期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. MySQL主从数据库配置与原理

    1.为什么要搭建主从数据库 (1)通过增加从库实现读写分离,提高系统负载能力 (2)将从库作为数据库备份库,实现数据热备份,为数据恢复提供机会 (3)根据业务将不同服务部署在不同机器同时又共享相同的数 ...

  2. QT 无法抓住异常

    出处:https://stackoverflow.com/questions/40980171/qt5core-dll-crashing I've found that enabling /EHa ( ...

  3. 基于docker-compose部署LNMP

    一.配置环境 [root@docker ~]# systemctl stop firewalld[root@docker ~]# iptables -F[root@docker ~]# setenfo ...

  4. 记一次Pinpoint监控工具部署过程

    环境:Centos 7.4 X64IP:192.168.1.11 1.配置环境,先安装jdk 到Oracle官网下载安装JDK https://www.oracle.com/technetwork/j ...

  5. 怎么查看当前的git分支是基于哪个分支创建的?

    2019独角兽企业重金招聘Python工程师标准>>> Question: 比如从 branch A 切出一个 branch B 然后对branch B做了一系列的操作 然后忘记了b ...

  6. A Tile Painting(循环节)

    Ujan has been lazy lately, but now has decided to bring his yard to good shape. First, he decided to ...

  7. unittest(执行用例)

    from selenium import webdriver from time import sleep import unittest#导入unittest库 import HTMLTestRun ...

  8. andorid jar/库源码解析之retrofit2

    目录:andorid jar/库源码解析 Retrofit2: 作用: 通过封装okhttp库,来进行web通讯,并且使用动态代理的方式,来调用接口地址,通过回调赋值结果. 栗子: 定义一个接口,用于 ...

  9. turtle库应用实例-五角星绘制

    五角星绘制 ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬ ...

  10. 2249: Altruistic Amphibians 01背包

    Description A set of frogs have accidentally fallen to the bottom of a large pit. Their only means o ...