设计缘起:
在大学里,每节课,基本都是很多个班级学生混一起在大教室上课,而逃课一直是令校领导和辅导员老师头痛的问题,辅导员,老师也是想尽办法防止学生逃课,比如最常用的手段就是上课点名签到。口头喊到的点名,还是会有其他同学帮喊“到”,而老师又记不清这名学生是不是他本人。
而小学初中高中,常常春游、秋游,每每这时候,是班主任们头疼的时候,“李想、李想,到了没有”,学生们帮老师找,然后才发现“李想”早就到了。找人点名,弄得心烦意乱。
设计思路:
于是我想,可以设计一个点名系统——一个也不少,录入人脸和姓名,而点名进行人脸签到时,与人脸库数据进行对比,签了后,统计出没有到场的人告知老师。
(当然可能现在很多学校都自配了这种高级系统了吧。当然那些系统肯定是贵贵的,而且每个教室配备一个,多么不划算,我们的一个也不少系统,只需要一台带摄像头的电脑就够了。(●'◡'●))
步骤1 创建角色、背景
1.创建角色:标题、录入名单按钮、开始名单按钮、清空名单按钮、新增名单按钮、查阅名单按钮、开始点名按钮、播报缺席者按钮、导入名单按钮、确定导入按钮、重新导入按钮、退出按钮,并为每个按钮添加造型,确定按下与没按下状态的造型。
2.创建背景。
3.在编写脚本中,这里将所有智能对话操作都由“Mind+”角色完成,而按钮角色只做切换作用,使用广播接收功能。
步骤2 认识AI图像识别
在此介绍下在这个项目中会用到的AI图像识别的一些脚本。
积木分三大类,同时也表示了使用的三大步骤:
基础设置:包含了账户控制、摄像头相关操作及图像保存选项,只需要选择性的调用一次即可。
获取图像:获取图像源数据,可以从摄像头、本地、网络三种方式获取。仅从摄像头获取需要用到电脑摄像头。
识别图像:获取图像之后通过识别相关的积木进行图像识别操作并获得结果。
【切换至独立账户】积木:AI图像识别功能调用的百度AI服务,因此需要使用百度AI的账户。
账户注册方法:
1. 登录百度AI开放平台,https://ai.baidu.com,点击页面右上角“控制台”,然后“注册”或者“登录”自己的百度账号。
2.登录成功后进入控制台页面,点击左边栏“人脸识别”,在新页面中点击“创建应用”,将“语音技术”、“文字识别”、“图像识别”、“人体分析”全部勾选,(有些用不上,但是都可以勾选,可以多选不可少选)。
3.在“应用管理”中复制AppID、API Key、Secret Key下方的参数,填到Mind+中“切换至独立账户”中。
4.填好之后可以点击一下此积木,如果运行出错会提示错误信息,没有提示即为正确。
【使用[弹窗/舞台]显示摄像头画面】积木:切换显示的位置,使用舞台时可以与舞台交互,使用弹窗时不影响舞台效果同时也可以隐藏。
【[开启/关闭/镜像开启]摄像头】积木:调用此模块时将打开摄像头。
镜像开启功能在使用文字识别等功能时使用。
【从摄像头画面截取图片】积木:调用此模块即可从摄像头截取一帧画面,返回得到图片数据,可以将图片存储到变量或者列表中进行二次判断。
【从本地文件获取图片[地址]】积木:调用此模块即可从电脑文件中调用一张图片,返回得到图片数据,文件路径可以使用变量或列表插入积木中。
【人脸识别成功?】积木:人脸识别中有人脸则此数据为真(true),否则为假(false)。
【识别图中[图片数据]人脸信息】积木:调用此模块将图片数据上传到服务器进行识别。
另外在扩展——功能模块中还有文字朗读功能。
【朗读[你好]】积木:使用电脑喇叭播放文字声音。
【使用[中音/高音/尖细/巨人/小猫]】积木:设置使用不同的嗓音播放声音。注意其中“小猫”没法发出人声。
【将朗读语言设置为[中文]】积木:设置使用不同的语言播放声音。
步骤3 编写录入名单脚本
1.编写“录入名单”角色脚本。(先设计角色被点击进入录入名单,其他广播接收的操作在后续慢慢添加进去。)
2.编写“新增名单”角色的脚本。(先设计角色被点击进入新增名单,其他广播接收的操作在后续慢慢添加进去。)
3.编写“Mind+”角色的录入名单、新增名单按钮触发后的接收脚本。
管理员模式进入条件:一是要求成年人,二是要求输入口令5050。
另外使用列表将人脸数据、姓名数据收集起来。
4.编写“退出”角色脚本。(先设计角色被点击进入退出管理员模式,其他广播接收的操作在后续慢慢添加进去。)
5.编写“查阅名单”按钮角色脚本。(先设计角色被点击进入查阅名单,其他广播接收的操作在后续慢慢添加进去。)
6.编写“清空名单”按钮角色脚本。(先设计角色被点击进入清空名单,其他广播接收的操作在后续慢慢添加进去。)
7.返回“Mind+”角色的脚本上继续编写查阅名单、清空名单指令。
8.编写“导入名单”角色脚本。单击导入名单,显示导入图片列表,并且语言文字提醒导入方法。另外导入出错可以清空导入图片列表,进行清空。
编写“导入图片”按钮角色脚本:
编写“确定导入”按钮角色脚本:
编写“重新导入”按钮角色脚本:
编写“Mind+”角色导入图片功能脚本:
导入的图片,需实现打开excel文件,在里面填写好图片路径(英文路径),然后将excel文件另存为csv格式文件。
9.前期测试时,将列表都显示出来,测试完毕后,在起始状态隐藏所有列表,而等需要时才显示列表。
步骤4 编写寄存名单脚本
在“Mind+”角色中添加新列表,用于临时存放学生名单——寄存名单。寄存名单用于学生签到后,删除这个学生,所以里面名单在学生新增完毕后会更新,在退出点名后会恢复,在系统开启时会恢复。
步骤5 编写开始点名脚本
1.编写“开始点名”按钮角色的脚本。
1.编写“点名签到”按钮角色的脚本。
2.编写“播报缺席者”按钮角色的脚本。
3.编写“退出2”按钮角色脚本,
4.编写“Mind+”角色的签到与播报脚本。
如下图空处是一个技术难点。
自己陷入思路难点,与识别到的签到者人脸数据百分百相同的是没有的,而相似度>70的,怎么知道是哪一个呢。
下图这样子是必须100%相似度才能得到。
这里要谢谢DF的工程师老师们,经DF工程师老师们指点,可以采取临时变量,将签到者的数据与学生人脸数据逐一对比,这样就能获得对应姓名。
于是最终点名签到脚本如下:
5.编写“Mind+”角色的“播报缺席者”功能的脚本。
6.上传最终“Mind+"角色脚本。(另外说明下,由于功能太多,要运行程序千万别点绿旗子,因为点击后需要电脑性能和网速都要很好的,才能不卡。所以不点绿旗子。)(由于触发都是按钮点击触发,所以可以在不点绿旗子状态下,直接点击按钮就能体验点名系统了。)
步骤6 测试体验
结果视频附上。(由于借用明星照片,又起了别的名字,于是视频加密码了,密码为5050。)
源文件码云地址:https://gitee.com/flfengling/chuangke_project.git
rzyzzxw2019.12.14
帅的