近年来,人工智能技术的发展日新月异,人脸检测已经被用于各种各样的领域,比如,在交通安全方面。人脸检测技术能够高效、准确地识别行人违规行为,提高交通管理的效率和质量;视频监控领域,人脸检测自动捕捉到画面中的人脸,从而进行后续的人脸识别或行为分析;电脑软件应用人脸检测技术可以实现自动追踪和调整摄像头的焦点,使得用户始终处于画面中心。
具体如何实现呢?接下来,就使用行空板、USB摄像头制作一个人脸检测装置。
![image.png](https://makelogimg.dfrobot.com.cn/makelog/652ce4c9f6f6eea679b51bc3/f1d6a01f88f3838e0b1ec953662a2ebe.png)
任务目标
摄像头实时拍摄,如果摄像头同时检测到有人脸时,就对该画面进行抓拍,并将抓拍的照片保存到行空板的系统文件里。
![image.png](https://makelogimg.dfrobot.com.cn/makelog/652ce4c9f6f6eea679b51bc3/c46651f9c04d2c85dc84ff07657f60b5.png)
动手实践
人脸检测装置主要用于抓拍人脸图像。如果摄像头检测到人脸就对该画面进行抓拍,然后将抓拍的照片保存在行空板的系统文件里,后期可以调取里面的照片查看。接下来,通过两个简单的小任务来学习。
任务一:显示实时视频
在此项任务中,打开摄像头,并将摄像头检测到的画面显示在行空板屏幕上。
任务二:完成人脸检测功能
实现人脸检测功能,当检测到人脸时,就在终端区域输出“检测到行人”的信息,对该画面进行抓拍,并将抓拍的照片保存到行空板的系统文件里。
任务一:显示实时视频
1. 硬件连接
将USB摄像头连接到行空板上,如下图。硬件连接成功后,使用USB线将行空板连接到计算机。
![image.png](https://makelogimg.dfrobot.com.cn/makelog/652ce4c9f6f6eea679b51bc3/ff694831ce7538a94daabc81d2ae20c0.png)
2. 软件准备
(1) 打开Mind+,按照下面图示完成软件准备过程。
![image.png](https://makelogimg.dfrobot.com.cn/makelog/652ce4c9f6f6eea679b51bc3/192a8fb815dc865de0c5c899a4703def.png)
(2) 点击“扩展”,在用户库的搜索框输入地址“https://gitee.com/chenqi1233/ext-object_recognition”然后按下回车按键搜索“物体检测”的库,搜索完成后点击“物体检测”库完成添加。
![image.png](https://makelogimg.dfrobot.com.cn/makelog/652ce4c9f6f6eea679b51bc3/af7d33a0d738d513aa5bb0af89a77975.png)
3. 编写程序
首先观察一下,任务一的界面上都包含哪些元素?标题,显示框,视频内容显示区域,效果如下图。
![image.png](https://makelogimg.dfrobot.com.cn/makelog/652ce4c9f6f6eea679b51bc3/83911ad814b794d075a6a080fd3bbd2f.png)
(1)UI界面设置,显示文字和圆角框,示例程序如下:
![image.png](https://makelogimg.dfrobot.com.cn/makelog/652ce4c9f6f6eea679b51bc3/202b2fe4a1684ed8db9cd15994454ed1.png)
(2) 想要显示实时的视频画面,就需要使用“初始化摄像头”指令打开摄像头,并设置该摄像头的设备号为0。
![image.png](https://makelogimg.dfrobot.com.cn/makelog/652ce4c9f6f6eea679b51bc3/27d4a6b64eb7ef654282dfceafdba24d.png)
(3) 现在摄像头已经打开了,接下来我们可以使用“从VideoCapture对象(vd)中抓取下一帧(img)以及状态(ret)”指令将捕获到的画面存入到 ‘img’ 这个变量中,然后使用“对象名(img_src)将图片(img)裁剪为宽()高()”指令将‘img’变量里的图像裁剪成宽为240,高为270的新图像,并新图像保存在 ‘img_src’ 变量中,以供后续处理和分析使用。
![image.png](https://makelogimg.dfrobot.com.cn/makelog/652ce4c9f6f6eea679b51bc3/61975cd58d53fd146510adc240baa0de.png)
(4) 上面我们已经学习了如何捕获画面和裁剪画面,接下来,我们将完成画面实时显示功能。首先导入一张白底的背景图到文件系统中,然后在(0,50)的坐标位置显示这张背景图。
![image.png](https://makelogimg.dfrobot.com.cn/makelog/652ce4c9f6f6eea679b51bc3/506980fec675dc313fed3bc3b2cc03c6.png)
(5) 因为OpenCV图像中的默认颜色格式是BGR,想要在行空板屏幕上显示画面,就需要将颜色格式转换成RGB,使用“对象名(imgROI)将图片(img_src)使用BGR和RGB之间进行转换”指令将‘img_src’ 变量中的图像转换成RGB,并将转换后的图像保存到‘imgROI’变量中,然后更新图片即可。完整参考程序如下。
![image.png](https://makelogimg.dfrobot.com.cn/makelog/652ce4c9f6f6eea679b51bc3/c1109d91d479bf7e0392bdfdb76169eb.png)
4. 程序运行
检查行空板是否已连接到mind+,无误后,点击右上角的运行按钮,程序运行成功后,行空板屏幕上会显示实时画面。
![image.png](https://makelogimg.dfrobot.com.cn/makelog/652ce4c9f6f6eea679b51bc3/34660038e3d53bffbfb4f1860ac860ce.png)
任务二:完成人脸检测功能
前面我们讲过,在任务一的基础上,加上人脸检测功能,当检测到人脸就在终端区域输出“检测到有行人”的信息,并抓拍人脸图片储存在行空板中。
1. 准备工作
按照任务一的“硬件连接”与“软件准备”连接好行空板并准备好mind+软件。
2. 编写程序
在程序开始之前,先分析一下需要任务二需要完成哪些功能?首先要加载人脸数据模型,然后再判断检测到的对象是不是人脸,如果摄像头检测到是人脸,终端区域输出“检测到有行人”。
(1) 加载人脸数据模型。首先利用“创建级联分类器(casecade)”指令创建一个空的级联分类器对象,并将其赋值给变量‘cascade’。由于创建的级联分类器对象是空的,无法进行物体检测。需要通过“对象名(casecade)加载 [人脸(默认)数据模型] 模型”指令加载一个训练好的人脸检测模型文件。这样,‘cascade’就可以用来检测画面中的人脸了。
![image.png](https://makelogimg.dfrobot.com.cn/makelog/652ce4c9f6f6eea679b51bc3/aa8f917d8a7ab10c3e5df4ab4d1f30ee.png)
(2)人脸数据模型加载完之后,需要利用“对象名(casecade)是否加载完成”指令来检查分类器是否已经加载了一个训练好的分类器模型。
![image.png](https://makelogimg.dfrobot.com.cn/makelog/652ce4c9f6f6eea679b51bc3/6706150b36e90e1f6f089ffea7f9e328.png)
(3)当确定分类器‘casecade’已经加载好了人脸模型后,就利用“对象名(casecade)输入检测图像(img)返回检测结果信息”指令对‘img’变量里的图像进行物体检测,然后返回检测结果。为了方便后续处理和分析,我们需要创建变量“ face ”用来存储检测结果。
![image.png](https://makelogimg.dfrobot.com.cn/makelog/652ce4c9f6f6eea679b51bc3/2b29a1fdc4e262422f3edba5b8bdae8d.png)
(4)当变量face数据的长度>0时,说明画面中检测到人脸了,这时终端区域就输出“检测到有行人”。
![image.png](https://makelogimg.dfrobot.com.cn/makelog/652ce4c9f6f6eea679b51bc3/a6a1494ae661434d87ae5f5a2cbeca70.png)
(5)如何抓拍并保存图片?利用 保存图片(img_src)到(“Mind+.png”)指令就可以将图片保存下来,当然我们也可以使用变量,给不同的图片起不同的名字。完整参考程序如下:
![image.png](https://makelogimg.dfrobot.com.cn/makelog/652ce4c9f6f6eea679b51bc3/723cdecf2648db40b02d6b55bb7512f1.png)
1. 程序运行
点击右上角的运行按钮,程序运行成功后,你会看见,当摄像头检测到是人脸,终端区域输出“检测到有行人”,当摄像头检测到是汽车时,终端区域输出“检测到有车辆”,并将抓拍到的照片保存到行空板的系统文件里。
![截屏2024-05-13 上午11.02.25.png](https://makelogimg.dfrobot.com.cn/makelog/652ce4c9f6f6eea679b51bc3/c9ebf301904564f4876f56f9335a481b.png)
如何查看行空板中存的图片呢?
连接行空板10.1.2.3远程终端后,可以看到在文件系统的文件目录下,会多出一个名为“行空板中的文件”。
![image.png](https://makelogimg.dfrobot.com.cn/makelog/652ce4c9f6f6eea679b51bc3/2e8d25d650042f0b3948c496bc13f5b7.png)
点击目录中的mindplus文件夹,然后再点击cache文件夹,找到对应的Mind+文件,如“任务二 人脸检测.mp”文件的保存位置。点击“任务二 人脸检测.mp”,可以看到抓拍的图片文件分别为:1.png、2.png、3.png......。
![image.png](https://makelogimg.dfrobot.com.cn/makelog/652ce4c9f6f6eea679b51bc3/2823d0e6d9a66ceca9e7ba4e670b98f7.png)
其中1.png、2.png、3.png......就是使用保存图片指令从摄像头中获取的图片。右击“xx.png”,选择“下载文件到电脑”,将图片下载到电脑上。记住保存的路径,通过电脑就可以查看摄像头拍摄的图片了。
![image.png](https://makelogimg.dfrobot.com.cn/makelog/652ce4c9f6f6eea679b51bc3/fcdc54d895c520700734d58bd83e456c.png)
附件
评论