所有分类
主题 主题
平台 平台
我的工作台
userHead
注册时间 [[userInfo.create_time]]
创造力 [[userInfo.creativity]]
[[userInfo.remark]]
[[d.project_title]]
articleThumb
[[d.material_name]]
timelineThumb
进入工作台
折叠
所有分类 我的工作台
展开

【教哈有方】基于HuskyLens和SIOT服务器的物联网人脸识别签到系统

xujh xujh 2020-03-27 10:59:14

这是前不久我在社区发的一个帖子,搬过来这里,跟大家一起学习。

拿到哈士奇(HuskyLens)一段时间了,一直想做个作品出来,因为掌控版能够连接互联网,因此想到了结合SIOT服务器做一个通过人脸识别签到并且自动把签到信息发送到SIOT服务器存档的应用。 首先来看卡硬件,很简单,一个哈士奇、一块掌控版(含掌控宝或其他扩展板)、一个舵机。

projectImage
projectImage
projectImage

当然,少不了我喜爱的天王天后照片,用于做人脸识别的测试,这里就不上图了。 软件主要是mind+和SIOT服务器。 首先要搭建好SIOT服务器,这个比较简单,这里用的是1.2的版本,点开软件,服务器就自动运行了。启动之后这个窗口记得不要关,窗口在,服务器在,窗口关,服务器关。当然,最小化还是可以的。

projectImage

下面开始进入最重要的编程部分了,我用的是mind+1.6.2,最新版本,为什么要用最新版本?因为最新版本才有哈士奇的图形化编程模块。 首先说一下这个作品的功能,提前让哈士奇学习需要签到的所有人的人脸,员工上班的通过人脸识别进行签到,哈士奇成功识别人脸后,在掌控版显示员工姓名,并把员工签到信息发送到SIOT服务器进行存档,同时可以通过掌控版查看未签到的人员名单。当然,SIOT服务器的数据可以用于存档,也可以用于对员工的签到时间进行统计分析。 先来看几个函数:

projectImage

这是调整舵机的函数,主要是为了实现识别过程中的人脸追踪,关于这个技能,之前有帖子详细介绍过(https://mc.dfrobot.com.cn/thread-302428-1-1.html),大家可以翻看,不同的是我没有2自由度云台,只有一个普通的舵机,所以只能设计左右的转动,上下就没办法了。

projectImage
projectImage
projectImage

这是SIOT服务器和wifi连接的函数,都是比较简单,SIOT的参数也比较好设置,mind+已经基本帮我们设置好了,找到自己电脑的ip地址填上去就可以了,另外记得Topic的命名格式是Dfrobot/xx 

projectImage

这是比较复杂的一个函数,主要用于存储和显示未签到的人员名单,主要原理是遍历哈士奇记录的所有人脸数据,逐个与已签到列表名单进行比对,哈士奇有记录的,但是没有出现在已签到列表的,就是未签到,记录到未签到列表(实际当然是用数据库记录,但是这里没有数据库,我们暂且用列表来模拟一个小型的数据库),最后把未签到列表存储在一个字符串变量里面并且显示在掌控版的OLED屏幕(列表不能直接显示)。 上个图让大家看看效果先(文末有完整演示视频)

projectImage
projectImage

(这里用了数字序号代替了人名) 最后上主程序:

projectImage

主程序主要实现三个功能,一是通过人脸识别读取当前人脸对应的信息,二是把这些信息发送到SIOT服务器,三是把信息存储到已签到的列表中(当然还是因为没有数据库)并且在掌控版的OLED显示出来。为了有效避免人一站在摄像头前面系统就拼命向服务器发送数据,这里做了延时来解决这个问题。 最后就是演示视频了,在上视频之前,简单说一下在SIOT服务器查看我们上传的数据的方法。

projectImage

然后找到你的设备,就可以查看掌控版发过来的数据了,上图是我测试过程中接收的数据,序号就是对应员工在人脸识别系统的序号。当然程序还可以优化,直接发送对应的名字上去,包括掌控版也可以直接显示名字而不是数字序号,只是有点懒,而且没数据库的情况下,小数据模拟意义不大,就不做了。 最后是大家想要的完整演示视频。

Makelog作者原创文章,未经授权禁止转载。
6
1
评论
[[c.user_name]] [[c.create_time]]
[[c.parent_comment.count]]
|
[[c.comment_content]]