目前,“新冠”病毒仍在全世界范围内肆虐,而“戴口罩”已是安全出行最基本的有效“标配”措施。人群中,我们几乎可以“一眼”就识别出某人是否“戴口罩”,计算机的“人脸识别”技术是否可以呢?其实,利用手中的树莓派和摄像头等设备进行开源硬件编程,完全可以设计制作出一个“口罩检测仪”,实现对人脸拍照进行是否“戴口罩”的检测并做出对应反馈的功能。
1.实验器材及连接
所需的实验器材包括:树莓派及古德微扩展板各一块,摄像头一个,超声波传感器一个,OLED显示屏一块,有源音箱一个,红色和绿色LED灯各一支。
首先,将摄像头的数据线穿过扩展板后插入树莓派标注有“CAMERA”字样的卡槽中,注意二者的“金手指”一面要对应并锁好卡扣;接着,将扩展板正确安装于树莓派上,注意四周均匀小心用力;然后,将超声波传感器插入20、21并排的四个插孔中,注意“双孔”的方向要朝外,引脚的标注要正确对应;OLED显示屏按照四个引脚的标注,插入扩展板的I2C插孔;红色和绿色LED灯分别插入5号和6号插孔,注意“长腿为正极、短腿为负极”;最后,将音箱信号线插入树莓派的音频输出圆孔,再通过数据线给树莓派通电,启动操作系统(如图1)。
2.古德微机器人的“积木”式编程
通过浏览器访问古德微机器人网站(http://www.gdwrobot.cn/),登录账号后点击“设备控制”进入“积木”编程区开始编写程序:
(1)编写两个“LED灯闪烁”函数
实验器材中的绿色和红色LED是用来进行光信号报警的:当检测到人脸是“戴口罩”状态时,绿色LED灯闪烁;反之,则控制红色LED灯闪烁。
从左侧“函数”中新建一个名为“绿灯闪烁”的函数,先建立一个“重复‘3’次…执行…”循环结构;接着,从“智能硬件”-“常用”中选择“控制‘6’号小灯‘亮’”模块语句,因为绿色LED是连接在6号GPIO中;然后是一条“等待0.1秒”模块语句,控制6号绿色LED灯持续亮0.1秒;最后再控制让它熄灭,并且持续0.05秒;实现绿色LED灯快速闪烁三次的效果。
将“绿灯闪烁”函数复制并粘贴,为新生成的函数重命名为“红灯闪烁”,将其中的两处“6号小灯”均修改为“5号小灯”,因为红色LED灯是连接在5号GPIO中(如图2)。
(2)对OLED显示屏进行“初始化”
从“智能硬件”-“显示屏”中选择“初始化OLED显示屏”模块语句,保持其默认的设备型号、使用接口、宽度及高度值不变;接着,建立一个变量,命名为“图片对象”,并为其赋值为“多媒体”-“图片”中的“新建图片模式”,同样也是保持默认的“RGB模式”、宽度、高度值等不变(如图3)。
(3)使用循环结构完成人脸是否“戴口罩”的检测
建立“重复当真…执行…”的循环结构,其中的第一条模块语句是建立变量“超声波测距”,并且为其赋值为“智能硬件”-“常用”中的“超声波测距”;接着是一个“如果…执行…”选择分支结构,对变量“超声波测距”的值是否小于30(单位为cm)进行判断,条件成立的话则建新一个名为“拍照”的变量,其值为“智能硬件”-“摄像头”中的“拍一张照片”;然后建立一个“如果…执行…否则…”二分支选择结构,判断条件是“人工智能”-“人脸识别”中的“检测图片‘/home/pi/imageTemp/facemask.jpg’中的人是否戴口罩”,注意需要将图片的文件名设置为“/home/pi/imageTemp/image.jpg”,因为上面的“拍一张照片”模块语句生成的图片文件是同目录中的“image.jpg”。
条件成立的话,说明抓拍到的人脸是“正常”的“戴口罩”状态,则先在屏幕LOG调试区显示输出“已经戴口罩!”,然后调用执行“绿灯闪烁”函数,接着控制音箱播放语音提示“已经戴口罩!”,最后是为变量“图片对象”添加“已经戴口罩!”文字信息,文字大小和位置的XY坐标均保持默认即可;
条件不成立,说明抓拍到的人脸是“不正常”的非“戴口罩”状态,则先在屏幕LOG调试区显示输出“马上戴口罩!”,然后调用执行“红灯闪烁”函数,接着控制音箱播放语音提示“马上戴口罩!”,最后是为变量“图片对象”添加“马上戴口罩!”文字信息。
在选择分支结构执行完毕之后,添加一条“把图片‘图片对象’显示到OLED显示屏”模块语句,作用是在OLED显示屏显示输出“已经戴口罩!”或“马上戴口罩!”;然后是“关闭摄像头”,还有循环体最后要添加“等待0.5秒”模块语句,防止程序占用过多系统资源而造成“死机”(如图4)。
3.测试树莓派“口罩检测仪”
程序编写完毕后点击“保存”按钮,将程序保存为“口罩检测仪”;接着点击“连接设备”按钮,出现五个对勾说明与树莓派已经成功连接;然后点击“运行”按钮,开始进行测试:
当有人进入超声波的有效检测区时,就会“自动”触发摄像头的拍照。如果测试者没戴口罩,树莓派的红色LED就会闪烁,程序LOG区和OLED显示屏均会显示输出“马上戴口罩!”,而且音箱也会播放“马上戴口罩!”语音提醒;如果测试戴了口罩,树莓派的动作就是:绿色LED闪烁,程序LOG区和OLED显示屏均会显示输出“已经戴口罩!”,音箱播放“已经戴口罩!”语音提醒(如图5)。
山东省招远第一中学新校微机组 牟晓东
|