单元四
第16课 人脸签到——身份提示系统

一、任务目标
把识别到的姓名连同时间追加写入签到.txt,完整程序用 oldname 避免同一人连续重复写入。
二、我们要学什么
- 学习要点:人脸签到|姓名写入文件
- 本课过关:能完成:说出签到就是把比对得到的姓名和时间写成文件里的一行;载入编程体验,指出识别结果不是 null 就追加写入签到.txt 并短声,彩屏显示姓名,按 B1 仍可按姓名表登记;再运行完整程序,指出多了 oldname,同一姓名连续出现时只写第一次。
- 示例对齐:编程体验对应 「十学期兴趣课程/学期5/4-3-1 人脸识别-人脸签到」;完整程序对应 「十学期兴趣课程/学期5/4-3-2 人脸识别-人脸签到改进」。
三、本节要点
本课要认识人脸签到:比对成功后把姓名和时间写入文件。重难点是分清两套——编程体验每次不是 null 就写一行;完整程序用 oldname,同一人连续出现只记一次。要点对齐「人脸签到|姓名写入文件」。
四、解题思路
任务:对照两种签到写入。编程体验每次识别到姓名就追加一行;完整程序同一人连续出现只写一次。请对照彩屏、喇叭和签到.txt。
本课主要用到:摄像头;彩屏 TFT;喇叭;B1 按键;文件签到.txt;人脸库 face.db。
- 1打开人脸库并清空,准备姓名元组。
- 2循环比对,得到识别结果 x。
- 3x 不是 null 时打开签到.txt,写入时间加姓名。
- 4编程体验每次符合就写一行并短声。
- 5完整程序还要 x 不等于 oldname 才写,写完把 oldname 换成 x。
流程示意
五、图形块功能讲解
下面只列出本课首次出现的 Mixly 图形块(真积木截图)。已在前面课讲过的不再重复;先认新块,再点「载入」对照拖搭。
| 图形块 | 分类 | 作用 | 本课用法 |
|---|---|---|---|
![]() | 文件 | 打开板卡上的文件。 | 识别结果不是 null 时,以追加方式打开签到.txt。 |
![]() | 文件 | 向文件写入内容。 | 先写入时间加姓名,再写入换行。完整程序还要姓名和 oldname 不同才写。 |
![]() | 板载传感 | 把时间格式化成字符串。 | rtctime.strtime() 接到姓名前面,记下签到时刻。 |
![]() | 文件 | 关闭已打开文件。 | 写完一行就 close,把记录落到文件里。 |
六、知识点讲解
| 知识点 | 本课怎么理解 |
|---|---|
| 写入条件 | 两套都要求 x 为真且 x 不等于 'null'。null 表示没对上库里的人,不写文件。 |
| 一行里有什么 | open('签到.txt','a+') 后写入时钟字符串加上姓名,再换行、关闭文件。 |
| 会不会连写 | 体验每次符合就写。完整程序用 oldname:姓名没变就不写,换人了才再写。 |
| 仍可补录 | 两套在显示姓名后按 B1,仍可按张三、李四…登记,成功则显示 ID 并短声。 |
先看体验是否连续写入同一姓名,再看完整程序换人之前会不会少写几行。
七、编程练习
点「载入」打开 MixVM(board=sant_design)。默认图形化积木;起步程序与积木优先来自 MixGo Sant「十学期兴趣课程/学期5」。语音/视觉在仿真中可能需真机或按键近似;在 Mixly 工具栏点「运行 / 停止」。请先读本页「四、解题思路」与「五、图形块功能讲解」,再点载入。
官方示例:4-3-1 人脸识别-人脸签到.mix。载入后运行。
正在载入编程环境
正在载入 MixGo SANT 仿真编程环境…
八、课堂练习
先完成两道正误判断,再做其余题目;选出后点「检查」。
判断:编程体验在识别结果不是 null 时,会把时间和姓名追加写入签到.txt。
判断:完整程序用 oldname,同一姓名连续出现时只写第一次。
识别结果为 null 时,两套程序会?
写入签到.txt 的一行里有?
编程体验和完整程序在写入次数上的差别是?
九、本节小结
本课认识人脸签到。编程体验每次识别到姓名就写入签到.txt;完整程序用 oldname,避免同一人连续重复写入。



