纪录一下我小学期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. [机器学习实战-Logistic回归]使用Logistic回归预测各种实例

    目录 本实验代码已经传到gitee上,请点击查收! 一.实验目的 二.实验内容与设计思想 实验内容 设计思想 三.实验使用环境 四.实验步骤和调试过程 4.1 基于Logistic回归和Sigmoid ...

  2. 基于 Docker 构建企业 Jenkins CI平台

    持续集成(Continuous Integration,CI):代码合并.构建.部署.测试都在一起,不断地执行这个过程,并对结果反馈. 持续部署(Continuous Deployment,CD):部 ...

  3. Git 简明手册

    0,Git 是什么 Git 是一个VCS(Version Control System),即版本控制系统. 版本控制系统从字面意思来看,它的用途就是管理/控制文件的版本.使用它,可以方便的知道一个文件 ...

  4. docker-compose简介及安装

    一.简介 Compose是用于定义和运行多容器Docker应用程序的工具,是docker的服务编排工具,主要应用于构建基于Docker的复杂应用,compose通过一个配置文件来管理多个docker容 ...

  5. OC的消息机制简单介绍

    在OC的消息机制中主要分为三个阶段,分别为: 1.消息发送阶段:从类以及父类的方法缓存列表和方法列表查找方法. 2.动态解析阶段:在消息发送阶段没有找到方法,则会进入这个阶段,负责动态添加方法实现. ...

  6. POJ1651:Multiplication Puzzle(区间dp)

    Multiplication Puzzle Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9419 Accepted: 5850 ...

  7. 被@ResponseBoby注释的方法在拦截器的posthandle方法中设置cookie失效的问题

    文章标题可能有点绕口.先来解释下遇到的问题. 我写了一个拦截器,希望能够实现保存特定方法的请求参数到cookie中. public class SaveParamInterceptor extends ...

  8. muduo网络库源码学习————线程特定数据

    muduo库线程特定数据源码文件为ThreadLocal.h //线程本地存储 // Use of this source code is governed by a BSD-style licens ...

  9. Naigos install pnp4nagios 绘图插件

    原文地址:http://www.cnblogs.com/caoguo/p/5022230.html vim /etc/httpd/conf/httpd.conf <Directory " ...

  10. 简单模拟实现Rxjs Observable

    1.先定义类型 export type Observer = { next: (any) => void, complete?: (any) => void, } export inter ...