发帖
1 0 0

安信可小安派BW21-CBV-Kit 人脸识别与智能控制

fjsl
中级会员

2

主题

1

回帖

232

积分

中级会员

积分
232
小安派·BW21-CBV-KIt 8 1 1 小时前
本帖最后由 fjsl 于 2025-3-16 11:15 编辑

前几天搭建好了Arduino开发环境,接下来就是做个小项目来让这块板子发光发热了。
这个小项目基于板子人脸识别例程RTSPFaceRecognition
通过注册人脸并分配权限,实现管理员和用户两种权限下的功能管理,从而实现在不同环境下给定不同的功能使用权限。

1、人脸识别Demo测试
首先在IDE中找到demo并打开,“文件” -> “示例” -> “AmebaNN” -> “RTSPFaceRecognition”

1.1

1.1

打开demo后,找到定义连接WiFi名称和密码的字符串数组,修改成自己需要连接的WiFi参数。
其他的保持默认即可。

1.2

1.2

打开工具,检查确认摄像头选项是否为G2053,否则摄像头初始化是无法完成的。

1.3

1.3

然后就是确认开发板和端口选择没问题,点击烧录,在编译过程中按住BOOT,然后按一下EN,松开BOOT,开发板进入下载模式。

1.4

1.4

1.41

1.41

下载完成后,按下EN,重置开发板,运行下载的程序。这时通过串口打印的消息中有关于rtsp的信息,得到串流数据的地址使用potplayer就可以实时查看摄像头拍摄到的信息了。

1.5

1.5

打开potplayer,右键菜单,选择打开链接,在弹出的界面输入地址,开始播放就可以查看摄像头所拍摄到的信息了。

1.6

1.6

1.7

1.7

1.8

1.8


初次烧入程序后,未注册过的人脸在摄像头信息中都会框红并显示unkonwn。
demo中提供了以下几个指令用来测试注册、删除人脸,重置人脸和备份恢复人脸数据。
注册人脸:
将相机对准目标人脸,然后输入 “REG={Name}” 为目标人脸命名;
删除特定的已注册人脸:
输入命令 “DEL={Name}” 以删除某个已注册的人脸。例如,“DEL=SAM”。
重置所有已注册的面:

输入命令 “RESET” 以忘记所有以前注册的人脸。所有以前分配的面和名称都将被删除。您可以通过进入人脸注册模式来重新注册人脸。
在 Flash 中备份和恢复已注册的人脸:

输入命令 “BACKUP” 将已注册面孔的副本保存到 Flash。如果存在备份,请输入命令“RESTORE”以从 Flash 加载已注册的人脸

接下来使用命令注册一下人脸,看测试效果
  1. <font size="4">REG=JS</font>
复制代码
20.png
21.png
  1. <font size="4">REG=QS</font>
复制代码
22.png
23.png
经过测试,人脸识别效率还是非常快,而且准确的,demo测试人脸识别没有问题,那就可以开始修改代码了。
2、功能修改
首先声明一个字符串变量admin用以存储管理员名称,便于识别对比,然后在循环体loop()后面添加从串口获取管理员名称的代码。
  1. <font size="4">String admin;

  2. void loop()
  3. {
  4.     if (Serial.available() > 0) {
  5.         String input = Serial.readString();
  6.         input.trim();

  7.         if (input.startsWith(String("REG="))) {  //注册人脸
  8.             String name = input.substring(4);
  9.             facerecog.registerFace(name);
  10.         } else if (input.startsWith(String("DEL="))) {  //删除特定人脸
  11.             String name = input.substring(4);
  12.             facerecog.removeFace(name);
  13.         } else if (input.startsWith(String("RESET"))) {  //重置所注册的人脸
  14.             facerecog.resetRegisteredFace();
  15.         } else if (input.startsWith(String("BACKUP"))) {  //备份所注册的人脸
  16.             facerecog.backupRegisteredFace();
  17.         } else if (input.startsWith(String("RESTORE"))) { //恢复所注册的人脸
  18.             facerecog.restoreRegisteredFace();
  19.         }
  20.         else if (input.startsWith(String("ADMIN="))) {  //从串口获取管理员名称
  21.             admin = input.substring(6);
  22.         }
  23.     }</font>
复制代码

接下来在人脸检测结果的回调函数中添加相关代码。
基本逻辑就是根据识别结果和设置的管理员名称比对,若相同则确认管理员身份,进入管理员模式,这里板载LED蓝灯会亮,表示系统此时为管理员模式,并且在rtsp推流中,识别名字后面显示ID为admin还是user。

2.1

2.1


3、效果展示

3.1

3.1

3.2

3.2

3.3

3.3

3.4

3.4

3.5

3.5

通过串口发送的相关指令如图所示。

3.6

3.6


至此,项目设想的管理员和用户模式测试完成,基本完成预期设想,剩下的就是在框架下实现相关功能,比如在工作台使用开发板做智能中控,管理员模式下有权限使用所有功能,例如增删注册信息、通过手势控制接入物联网的智能工具,亦或是识别到已注册人员自动打开工作台台灯、工具;用户模式下仅能使用部分基础功能,这样就可以避免非操作人员误操作工作台。

想要加的功能还有好多好多,留待之后有时间慢慢完善吧。
最后感谢园长,感谢安信可,有了这块有趣的板子又可以整活啦。


──── 0人觉得很赞 ────

使用道具 举报

赞赞
您需要登录后才可以回帖 立即登录
高级模式
返回
统计信息
  • 会员数: 28084 个
  • 话题数: 39684 篇