单元四

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

任务场景:人脸签到——身份提示系统
任务场景:人脸签到——身份提示系统

一、任务目标

把识别到的姓名连同时间追加写入签到.txt,完整程序用 oldname 避免同一人连续重复写入。

二、我们要学什么

  • 学习要点:人脸签到|姓名写入文件
  • 本课过关:能完成:说出签到就是把比对得到的姓名和时间写成文件里的一行;载入编程体验,指出识别结果不是 null 就追加写入签到.txt 并短声,彩屏显示姓名,按 B1 仍可按姓名表登记;再运行完整程序,指出多了 oldname,同一姓名连续出现时只写第一次。
  • 示例对齐:编程体验对应 「十学期兴趣课程/学期5/4-3-1 人脸识别-人脸签到」;完整程序对应 「十学期兴趣课程/学期5/4-3-2 人脸识别-人脸签到改进」。

三、本节要点

本课要认识人脸签到:比对成功后把姓名和时间写入文件。重难点是分清两套——编程体验每次不是 null 就写一行;完整程序用 oldname,同一人连续出现只记一次。要点对齐「人脸签到|姓名写入文件」。

1读场景明确真实任务
2对要点人脸签到|姓名写入文件
3载入运行官方积木/代码

四、解题思路

任务:对照两种签到写入。编程体验每次识别到姓名就追加一行;完整程序同一人连续出现只写一次。请对照彩屏、喇叭和签到.txt。

本课主要用到:摄像头;彩屏 TFT;喇叭;B1 按键;文件签到.txt;人脸库 face.db。

  1. 1打开人脸库并清空,准备姓名元组。
  2. 2循环比对,得到识别结果 x。
  3. 3x 不是 null 时打开签到.txt,写入时间加姓名。
  4. 4编程体验每次符合就写一行并短声。
  5. 5完整程序还要 x 不等于 oldname 才写,写完把 oldname 换成 x。

流程示意

打开并清空人脸库循环得到识别结果非null则打开签到文件体验每次都写一行完整用oldname防重复

五、图形块功能讲解

下面只列出本课首次出现的 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。载入后运行。

八、课堂练习

先完成两道正误判断,再做其余题目;选出后点「检查」。

  1. 判断:编程体验在识别结果不是 null 时,会把时间和姓名追加写入签到.txt。

  2. 判断:完整程序用 oldname,同一姓名连续出现时只写第一次。

  3. 识别结果为 null 时,两套程序会?

  4. 写入签到.txt 的一行里有?

  5. 编程体验和完整程序在写入次数上的差别是?

九、本节小结

本课认识人脸签到。编程体验每次识别到姓名就写入签到.txt;完整程序用 oldname,避免同一人连续重复写入。