经过多天苦思冥想,结合Mind+优秀的人工智能,TinyWebDB,文字朗读和语音识别模块,设计并开发“AI+化妆舞会”项目。
功能流程:
(1)、输入“start”进入嘉宾代号和人脸识别功能,从数据库中获取人脸图片名称,若有此嘉宾并识别成功,进入化妆舞会,根据人脸特征点帽子和眼镜的实时跟随,大小变化,【↑】键切换帽子造型,【↓】键切换眼镜造型。多种搭配任你选择。
(2)、输入“add”新增嘉宾信息,输入代号,接着保存人脸图片到数据库。
(3)、输入“del”删除嘉宾信息,输入代号,从数据库中删除用户信息。
功能主要有:新增嘉宾信息,删除嘉宾信息,嘉宾身份校验(人脸打卡),眼镜和帽子跟随人脸关键点等功能。
如有不妥,请多多指教!!
先上视频,一睹为快!!
项目整体逻辑
设计思路与实现:
1、新增嘉宾信息
(1)使用【询问嘉宾代号】积木获取嘉宾代号并设置变量"codeName",打开摄像头截取人脸图片并保存,从保存截图的文件夹中复制文件名(文件后缀也要复制)到【询问文件名】积木并设置变量"imageUrl"
(2)打开TinyWebDB地址,注册并登陆,手动新建tag为“用户”,value为“代号”的一条数据记录,目的是记录所增加的用户代码,用来后面校验是否有此用户,value值默认为“代号”目的时在获取“用户”列表字符串时不会因没有数据返回undefined。 合并用户输入的代号并更新“用户”tag,新增"codeName"的tag,value为"imageUrl"。新增成功后跳转到嘉宾身份识别功能。
2、删除嘉宾信息
使用【询问要删除的代号】积木获取嘉宾代号并设置变量"delTag",使用TinyWebDB的删除标签积木,删除tag为输入代号的那条记录,同时获取整个用户代号列表字符串,将其通过循环转换为数组,返回数组中指定代号的编号,并将其从数组中删除,转换为用逗号拼接的字符串,再保存到“用户”tag中。删除成功后跳转到命令输入功能。例如图所示,删除“葡萄”代码后。
3、嘉宾身份校验
(1)播放提示音“叮”的一声后录制代号语音,监听时间3秒,拿到语音识别结果.
(2)在语音识别之前,从数据库中获取“用户”列表字符串,将其转为数组,用语音识别的结果与数组进行匹配,若包含表示有此用户,继续进行人脸识别,若不包含表示无此用户,5秒后重新开始识别。
(3)若包含此用户,进行人脸识别,使用上一步识别的代号,从数据库中查询其人脸识别文件名称,使其与从摄像头画面截取的图片进行人脸比较,相似度大于80即认为人脸识别成功,广播“通过”,借此来执行眼镜和帽子跟随人脸关键点功能。若人脸识别失败,5秒后重新开始识别。
4、眼镜和帽子跟随人脸关键点
(1)识别从摄像头中截取的图片的人体关键点,主要使用左眼,右眼,头部关键点。在人体关键点识别成功前提下,设置人体关键点相应变量,变量命名规则:【左眼x=zuoyanX,右眼x=youyanX,左眼y=zuoyanX,右眼y=youyanY,头部x=toubuX,头部y=toubuY】。
(2)分别设置眼镜和帽子的大小,位置,面向方向。设置大小是因为人脸距离摄像头有远有近,来设置相应的大小,公式一。设置位置是通过左右眼(x,y)轴坐标,求两点中心点坐标,使眼镜和帽子跟随移动,公式二。设置面向方向是因为人脸向左或向右歪头,眼镜盒帽子跟随旋转,公式三。
5、选择指定功能
(1)进入项目,首先通过输入指令的方式选择发送不同的广播,以此来执行不同的功能,start-进入会场 add-新增嘉宾 del-删除嘉宾。
6、眼镜和帽子切换造型
【↑】键切换帽子造型,【↓】键切换眼镜造型。多种搭配任你选择
7、最终效果图奉上
附件
Forgotten2019.12.25
好玩
爱吃馒头不吃辣2020.01.06
感谢评论哈哈哈