基于.net开发的自助餐饮系统

本文系 EMQ&Intel 联合举办的首届“中国物联网数据基础设施最佳案例评选大赛“个人开发者赛道一等奖作品。

项目简介

智能餐饮自助结算系统是一个由称重系统、显示屏、自助扫码盒和 Intel CPU 组成的智能自助结算终端,将装有菜品的托盘放到秤盘上结算,显示屏会向就餐顾客显示本次饭菜菜品的份数、金额,顾客可以通过微信支付宝扫描、刷脸或校园卡员工卡进行自助结算,整个自助收银流程不到两秒钟,充分展示了就餐的智能化、人性化、透明化。

项目地址:https://github.com/roushanburou/zizhujiesuan

技术框架

架构图

d25dcd812db83874f5b301ab0681a031.png

  1. 在采购来的自助结算平台安装 USB 高清摄像头,用于采集菜品图片。

    5523509fdbb5c48e4c162bb1eb95a222.png

  2. 将采集到的数据集转化为 TensorFlow 格式的 tfrecoed。

    0a3759f9239f3aec61369232ff1c9bac.png

  3. 本次选用的是 TensorFlow2 下的预训练模型 ssd_mobilenet_v2,因为看到 OpenVINO 在最新的版本不再支持 TensorFlow1.X 版本,所以采用 TensorFlow2.X 版本去做。

  4. 训练完成后,将模型通过 mo.py 文件转化为 IR 文件

    967412766975a344536a9a05d47919d9.png

这次发现 OpenVINO 更新了 PaddlePaddle 模型转换,后期有机会可以试一试。在生成 IR 文件后,根据 OpenVINO 基于目标检测提供的object_detection_sample_ssd.py 自己编写了代码推理模板进行推理,然后把命令和结果封装成 Python 脚本。

  1. 编写桌面程序,安装 IronPython 库,嵌入 Python 脚本。这款结算平台的称重是串口通信,在调通波特率后顺利解析出协议,通过电子秤感应程序是否需要进行识别,这样免去了需要实时检测的问题,整体效果如下:

c2f1d141412027c8b4c074a07753304f.jpeg

实际测试大概两秒左右,效果非常不错。识别后由客户点击结算,结算完成后自助打印小票。

使用说明

将装有菜品的托盘放到秤盘上结算,显示屏会向就餐顾客显示本次饭菜菜品的份数、金额,顾客可以通过微信支付宝扫描,刷脸或校园卡员工卡自助结算,点击结算会有小票打印。

作者寄语

在餐饮这样消费时段集中的行业中,结算速度决定了企业盈利情况。基于 OpenVINO 的智能自助餐饮结算系统可以快速准确识别整盘菜品种类以及数量,软件自动完成金额汇总,不需要人工进行每一个菜品的计价,辅以充值卡、微信、支付宝等快捷支付手段,可以实现结算台前无排队。

智能餐饮自助结算结合了物联网技术,将数据通过 MQTT 汇聚至公有云平台,便于后期制作大数据分析系统。通过大数据分析,可实时掌控柜台菜品的数量,及时补充菜品,还可根据每个菜品的销售状况,实时对后厨的制作口味做出调整;也可跟踪长期顾客的饮食喜好,结合健康营养管理系统,对顾客热量摄入提供健康建议,为客户提供更多价值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/283040.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java打包维护_java打包详解

from yahh2008的blog: http://www.matrix.org.cn/blog/yahh2008/兄弟,对java着迷吗,或者是为了自己的生计,不论怎样都欢迎你进入精彩java世界,welcome!可能你刚刚对每个人说:Hello World!也或者…

Linux高级文本处理之sed(三)

sed高级命令sed允许将多行内容读取到模式空间,这样你就可以匹配跨越多行的内容。本篇笔记主要介绍这些命令,它们能够创建多行模式空间并且处理之。其中,N/D/P这三个多行命令分别对应于小写的n/d/p命令,后者我们在上一篇已经介绍。…

如何在 C# 程序中注入恶意 DLL ?

一:背景 前段时间在训练营上课的时候就有朋友提到一个问题,为什么 Windbg 附加到 C# 程序后,程序就处于中断状态了?它到底是如何实现的?其实简而言之就是线程的远程注入,这一篇就展开说一下。二&#xff1a…

练习题|网络编程-socket开发

原文:https://www.cnblogs.com/shengyang17/p/8822745.html 1、什么是C/S架构? C指的是client(客户端软件),S指的是Server(服务端软件),C/S架构的软件,实现服务端软件与客…

ABP vNext微服务架构详细教程(补充篇)——单层模板(上)

简介在之前的《ABP vNext微服务架构详细教程》系列中,我们已经构建了完整的微服务架构实例,但是在开发过程中,我们会发现每个基础服务都包含10个类库,这是给予DDD四层架构下ABP的实现方案,但是实际使用中我们会发现&am…

mybatis源码学习(三):MappedStatement的解析过程

我们之前介绍过MappedStatement表示的是XML中的一个SQL。类当中的很多字段都是SQL中对应的属性。我们先来了解一下这个类的属性: public final class MappedStatement {private String resource;private Configuration configuration;//sql的IDprivate String id;//…

C# 二十年语法变迁之 C# 8参考

C# 二十年语法变迁之 C# 8参考自从 C# 于 2000 年推出以来,该语言的规模已经大大增加,我不确定任何人是否有可能在任何时候都对每一种语言特性都有深入的了解。因此,我想写一系列快速参考文章,总结自 C# 2.0 以来所有主要的新语言…

windows 提权 cve-2018-8897

windows 提权 cve-2018-8897影响范围:基本上是全版本具体影响范围看详情:https://portal.msrc.microsoft.co … isory/CVE-2018-8897http://www.o2oxy.cn/wp-content/uploads/2018/06/cve-2018-8897.rar转载于:https://blog.51cto.com/9861015/2126608

java servlet练习测试

步骤: 0、首先创建web project,工程名:test_servlet 1、编写Servlet,TestServlet.java文件内容: package com.ouyang.servlet;import java.io.IOException; import java.sql.Connection; import java.sql.DriverManage…

《ASP.NET Core 6框架揭秘》实例演示[19]:数据加解密与哈希

数据保护(Data Protection)框架旨在解决数据在传输与持久化存储过程中的一致性(Integrity)和机密性(confidentiality)问题,前者用于检验接收到的数据是否经过篡改,后者通过对原始的数…

如何在ABAP Netweaver和CloudFoundry里记录并查看日志

Netweaver 要记录日志需要有一个checkpoint group&#xff0c;可以自行创建也可以使用标准的。这里我重用标准的group&#xff1a;DEMO_CHECKPOINT_GROUP。 tcode SAAB&#xff0c;点Display <->Activate进入编辑模式&#xff0c;将Logpoints设置为"Log"&#…

如何成为有效学习的高手(许岑)——思维导图

总结自许岑精品课《如何成为有效学习的高手》&#xff0c;图片看不清的可以看下面。 最后有彩蛋&#xff01;最后有彩蛋&#xff01;最后有彩蛋&#xff01; 定义 高效学习的定义&#xff1a;找到最适合自己的学习手法&#xff0c;在相对短的时间内集中注意力&#xff0c;以解决…

WPF Canvas 平滑笔迹

WPF Canvas 平滑笔迹控件名&#xff1a;CanvasHandWriting作者&#xff1a;小封&#xff08;邝攀升&#xff09;原文链接&#xff1a; https://github.com/WPFDevelopersOrg/WPFDevelopers编辑&#xff1a;驚鏵完整的思路如下收集路径点集。平均采样路径点集。将路径点集转为…

NetSpeed

NetSpeed公司提供的NOC包括三部分&#xff0c;可以通过NocStudio进行配置生成。 1)NetSpeed Orion&#xff0c;面向快速SoC design的可综合平台。 2)Linley NetSpeed NoC面向复杂的interconnect实现&#xff0c;同时优化内部physical implementation和timing closure. NoC是基于…

js ajax java传参_ajax参数传递与后台接收

ajax参数传递与后台接收Servlet中读取http参数的方法Enumeration getParameterNames() 返回一个 String 对象的枚举&#xff0c;包含在该请求中包含的参数的名称String getParameter(String name) 以字符串形式返回请求参数的值&#xff0c;或者如果参数不存在则返回 null。Str…

init 访问器只能初始化时赋值,是真的吗?

前言C# 提供的 init 关键字用于在属性中定义访问器方法&#xff0c;可以让属性仅能在对象初始化的时候被赋值&#xff0c;其他时候只能为只读属性的形式。例如下面代码可以正常执行&#xff1a;public class Demo {public string Name { get; init; } }var demo new Demo { Na…

eclipse实现代码块折叠-类似于VS中的#region……#endregion

背 景 刚才在写代码的时候&#xff0c;写了十几行可以说是重复的代码&#xff1a; 如果整个方法或类中代码多了&#xff0c;感觉它们太TM占地方了&#xff0c;给读者在阅读代码上造成很大的困难&#xff0c;于是想到能不能把他们“浓缩”成一行&#xff0c;脑子里第一个闪现出的…

java定义基础变量语句_java语言基础-变量

一丶变量的基本概念1.什么是变量(1).内存中的一个存储区域(2).该区域有自己的名称(变量名),和类型(数据类型)(3.)该区域的数据可以在同一类型范围内不断变化(定义变量的主要目的是因为数据的不确定性)2.为什么要定义变量用来不断存放同一类型的常量&#xff0c;并可以重复使用3…

C# WPF MVVM模式[经典]案例

01—前言Caliburn.Micro(简称CM)一经推出便备受推崇&#xff0c;作为一款MVVM开发模式的经典框架&#xff0c;越来越多的受到wpf开发者的青睐.我们看一下官方的描述&#xff1a;Caliburn是一个为Xaml平台设计的小型但功能强大的框架。Micro实现了各种UI模式&#xff0c;用于解决…

shell数组

定义数组[rootwy shell]# a(1 2 3 4)显示数组[rootwy shell]# echo ${a[]}1 2 3 4[rootwy shell]# echo ${a[*]}1 2 3 4显示数组中的某个元素[rootwy shell]# echo ${a[0]}1增加元素[rootwy shell]# a[4]9[rootwy shell]# echo ${a[*]}1 2 3 4 9修改元素值 [rootwy shell]# a[2…