本帖最后由 fjsl 于 2025-3-16 11:15 编辑
前几天搭建好了Arduino开发环境,接下来就是做个小项目来让这块板子发光发热了。
这个小项目基于板子人脸识别例程RTSPFaceRecognition。
通过注册人脸并分配权限,实现管理员和用户两种权限下的功能管理,从而实现在不同环境下给定不同的功能使用权限。
1、人脸识别Demo测试
首先在IDE中找到demo并打开,“文件” -> “示例” -> “AmebaNN” -> “RTSPFaceRecognition”
1.1
打开demo后,找到定义连接WiFi名称和密码的字符串数组,修改成自己需要连接的WiFi参数。
其他的保持默认即可。
1.2
打开工具,检查确认摄像头选项是否为G2053,否则摄像头初始化是无法完成的。
1.3
然后就是确认开发板和端口选择没问题,点击烧录,在编译过程中按住BOOT,然后按一下EN,松开BOOT,开发板进入下载模式。
1.4
1.41
下载完成后,按下EN,重置开发板,运行下载的程序。这时通过串口打印的消息中有关于rtsp的信息,得到串流数据的地址使用potplayer就可以实时查看摄像头拍摄到的信息了。
1.5
打开potplayer,右键菜单,选择打开链接,在弹出的界面输入地址,开始播放就可以查看摄像头所拍摄到的信息了。
1.6
1.7
1.8
初次烧入程序后,未注册过的人脸在摄像头信息中都会框红并显示unkonwn。
demo中提供了以下几个指令用来测试注册、删除人脸,重置人脸和备份恢复人脸数据。
注册人脸:
将相机对准目标人脸,然后输入 “REG={Name}” 为目标人脸命名;
删除特定的已注册人脸:
输入命令 “DEL={Name}” 以删除某个已注册的人脸。例如,“DEL=SAM”。
重置所有已注册的面:
输入命令 “RESET” 以忘记所有以前注册的人脸。所有以前分配的面和名称都将被删除。您可以通过进入人脸注册模式来重新注册人脸。
在 Flash 中备份和恢复已注册的人脸:
输入命令 “BACKUP” 将已注册面孔的副本保存到 Flash。如果存在备份,请输入命令“RESTORE”以从 Flash 加载已注册的人脸
接下来使用命令注册一下人脸,看测试效果
- <font size="4">REG=JS</font>
复制代码
- <font size="4">REG=QS</font>
复制代码
经过测试,人脸识别效率还是非常快,而且准确的,demo测试人脸识别没有问题,那就可以开始修改代码了。
2、功能修改
首先声明一个字符串变量admin用以存储管理员名称,便于识别对比,然后在循环体loop()后面添加从串口获取管理员名称的代码。
- <font size="4">String admin;
- void loop()
- {
- if (Serial.available() > 0) {
- String input = Serial.readString();
- input.trim();
- if (input.startsWith(String("REG="))) { //注册人脸
- String name = input.substring(4);
- facerecog.registerFace(name);
- } else if (input.startsWith(String("DEL="))) { //删除特定人脸
- String name = input.substring(4);
- facerecog.removeFace(name);
- } else if (input.startsWith(String("RESET"))) { //重置所注册的人脸
- facerecog.resetRegisteredFace();
- } else if (input.startsWith(String("BACKUP"))) { //备份所注册的人脸
- facerecog.backupRegisteredFace();
- } else if (input.startsWith(String("RESTORE"))) { //恢复所注册的人脸
- facerecog.restoreRegisteredFace();
- }
- else if (input.startsWith(String("ADMIN="))) { //从串口获取管理员名称
- admin = input.substring(6);
- }
- }</font>
复制代码
接下来在人脸检测结果的回调函数中添加相关代码。
基本逻辑就是根据识别结果和设置的管理员名称比对,若相同则确认管理员身份,进入管理员模式,这里板载LED蓝灯会亮,表示系统此时为管理员模式,并且在rtsp推流中,识别名字后面显示ID为admin还是user。
2.1
3、效果展示
3.1
3.2
3.3
3.4
3.5
通过串口发送的相关指令如图所示。
3.6
至此,项目设想的管理员和用户模式测试完成,基本完成预期设想,剩下的就是在框架下实现相关功能,比如在工作台使用开发板做智能中控,管理员模式下有权限使用所有功能,例如增删注册信息、通过手势控制接入物联网的智能工具,亦或是识别到已注册人员自动打开工作台台灯、工具;用户模式下仅能使用部分基础功能,这样就可以避免非操作人员误操作工作台。
想要加的功能还有好多好多,留待之后有时间慢慢完善吧。
最后感谢园长,感谢安信可,有了这块有趣的板子又可以整活啦。
|