这是前不久我在社区发的一个帖子,搬过来这里,跟大家一起学习。
拿到哈士奇(HuskyLens)一段时间了,一直想做个作品出来,因为掌控版能够连接互联网,因此想到了结合SIOT服务器做一个通过人脸识别签到并且自动把签到信息发送到SIOT服务器存档的应用。
首先来看卡硬件,很简单,一个哈士奇、一块掌控版(含掌控宝或其他扩展板)、一个舵机。
当然,少不了我喜爱的天王天后照片,用于做人脸识别的测试,这里就不上图了。
软件主要是mind+和SIOT服务器。
首先要搭建好SIOT服务器,这个比较简单,这里用的是1.2的版本,点开软件,服务器就自动运行了。启动之后这个窗口记得不要关,窗口在,服务器在,窗口关,服务器关。当然,最小化还是可以的。
下面开始进入最重要的编程部分了,我用的是mind+1.6.2,最新版本,为什么要用最新版本?因为最新版本才有哈士奇的图形化编程模块。
首先说一下这个作品的功能,提前让哈士奇学习需要签到的所有人的人脸,员工上班的通过人脸识别进行签到,哈士奇成功识别人脸后,在掌控版显示员工姓名,并把员工签到信息发送到SIOT服务器进行存档,同时可以通过掌控版查看未签到的人员名单。当然,SIOT服务器的数据可以用于存档,也可以用于对员工的签到时间进行统计分析。
先来看几个函数:
这是调整舵机的函数,主要是为了实现识别过程中的人脸追踪,关于这个技能,之前有帖子详细介绍过(https://mc.dfrobot.com.cn/thread-302428-1-1.html),大家可以翻看,不同的是我没有2自由度云台,只有一个普通的舵机,所以只能设计左右的转动,上下就没办法了。
这是SIOT服务器和wifi连接的函数,都是比较简单,SIOT的参数也比较好设置,mind+已经基本帮我们设置好了,找到自己电脑的ip地址填上去就可以了,另外记得Topic的命名格式是Dfrobot/xx
这是比较复杂的一个函数,主要用于存储和显示未签到的人员名单,主要原理是遍历哈士奇记录的所有人脸数据,逐个与已签到列表名单进行比对,哈士奇有记录的,但是没有出现在已签到列表的,就是未签到,记录到未签到列表(实际当然是用数据库记录,但是这里没有数据库,我们暂且用列表来模拟一个小型的数据库),最后把未签到列表存储在一个字符串变量里面并且显示在掌控版的OLED屏幕(列表不能直接显示)。
上个图让大家看看效果先(文末有完整演示视频)
(这里用了数字序号代替了人名)
最后上主程序:
主程序主要实现三个功能,一是通过人脸识别读取当前人脸对应的信息,二是把这些信息发送到SIOT服务器,三是把信息存储到已签到的列表中(当然还是因为没有数据库)并且在掌控版的OLED显示出来。为了有效避免人一站在摄像头前面系统就拼命向服务器发送数据,这里做了延时来解决这个问题。
最后就是演示视频了,在上视频之前,简单说一下在SIOT服务器查看我们上传的数据的方法。
然后找到你的设备,就可以查看掌控版发过来的数据了,上图是我测试过程中接收的数据,序号就是对应员工在人脸识别系统的序号。当然程序还可以优化,直接发送对应的名字上去,包括掌控版也可以直接显示名字而不是数字序号,只是有点懒,而且没数据库的情况下,小数据模拟意义不大,就不做了。
最后是大家想要的完整演示视频。
4554809212023.10.09
可以加你为好友探讨一下?
tLYHuaNNc7fz2022.12.09
1
DFBJMFvtzEI2020.04.01
作者可以加好友探讨吗?