基于.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,一经查实,立即删除!

相关文章

cacti 被监控机器snmp 配置

被监控服务器 需要查看网卡流量, 磁盘空间等信息。修改如下。vi /etc/snmp/snmpd.conf1、找到com2sec notConfigUser default public 改为:com2sec notConfigUser 192.168.1.1(改成监控服务器的ip) public 2、找到…

IntentService用法

IntentService 用完即走 IntentService,可以看做是Service和HandlerThread的结合体,在完成了使命之后会自动停止,适合需要在工作线程处理UI无关任务的场景。 IntentService 是继承自 Service 并处理异步请求的一个类,在 IntentSer…

TeaPot 用webgl画茶壶(3) 环境纹理和skybox

1 <html>2 <head>3 <title>TeaPolt</title>4 </head>5 6 <body οnlοad"main()">7 <canvas id"viewPort" width"600" height"600">8 This b…

java打包维护_java打包详解

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

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

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

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

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

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

原文&#xff1a;https://www.cnblogs.com/shengyang17/p/8822745.html 1、什么是C/S架构&#xff1f; C指的是client&#xff08;客户端软件&#xff09;&#xff0c;S指的是Server&#xff08;服务端软件&#xff09;&#xff0c;C/S架构的软件&#xff0c;实现服务端软件与客…

okhttputils java_Java OkHttpUtils.post方法代码示例

import com.zhy.http.okhttp.OkHttpUtils; //导入方法依赖的package包/类Overridepublic void performRequestAsync(AyoRequest request, BaseResponseDispatcher responseHandler, BaseHttpCallback callback) {String url request.url;//基于OkHttpUtils辅助类//1 method决定…

近日安排

先把二分题做了&#xff0c;二分哪个小白书学了。 做图论题&#xff0c;4道转载于:https://www.cnblogs.com/no-regrets/p/7215366.html

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

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

JQuery this和$(this)的区别及获取$(this)子元素对象的方法

1.JQuery this和$(this)的区别 // this其实是一个Html 元素。 // $this 只是个变量名&#xff0c;加$是为说明其是个jquery对象。 // 而$(this)是个转换&#xff0c;将this表示的dom对象转为jquery对象&#xff0c;这样就可以使用jquery提供的方法操作。 相信很多刚接触JQuery的…

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

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

sealed java_Java包isSealed()方法与示例

包类isSealed()方法isSealed()方法在java.lang包中可用。isSealed()方法用于检查此程序包是否密封。isSealed()方法是一种非静态方法&#xff0c;只能通过类对象访问&#xff0c;如果尝试使用类名称访问该方法&#xff0c;则会收到错误消息。isSealed()方法在密封包装时不会引发…

java enum分析

用法一&#xff1a;常量 在JDK1.5 之前&#xff0c;我们定义常量都是&#xff1a; public static fianl.... 。现在好了&#xff0c;有了枚举&#xff0c;可以把相关的常量分组到一个枚举类型里&#xff0c;而且枚举提供了比常量更多的方法。 public enum Color { RED, GREEN,…

1176: C语言实验题――数组逆序

描述:输入10个整数存入一维数组&#xff0c;再按逆序重新存放后再输出。输入:输入包括一行。 10个以空格格开的整数输出:逆序的10个整数&#xff0c;整数以空格格开样例输入:1 3 5 9 7 6 8 2 4 0样例输出:0 4 2 8 6 7 9 5 3 1考点:数的交换代码: #include <stdio.h> int …

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

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

windows 提权 cve-2018-8897

windows 提权 cve-2018-8897影响范围&#xff1a;基本上是全版本具体影响范围看详情&#xff1a;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练习测试

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

java 检测ip网速_java心跳测网速Demo

//心跳中可以放//自己瞎搞的&#xff0c;有人帮改进吗&#xff1f;package netTest;import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.ArrayList;public class net_test_one {public static void main(String[] args) {try {String[] cmd ne…

简洁的 Bash Programming 技巧(三)

这是简洁的 Bash Programming 技巧系列的第三篇文章&#xff0c;这一系列的文章专门介绍 Bash 编程中一些简洁的技巧&#xff0c;帮助大家提高平时 Bash 编程的效率。有兴趣的同学可以回顾下之前的两篇文章&#xff08;一&#xff09;和续篇。 1. 替换语法${parameter/pattern/…