【使用树莓派进行简易人脸识别】
手里有个从云汉芯城购买的树莓派2,刚好使用它和OpenCV制作一个简易的人脸识别和追踪系统。当然用树莓派3也是没问题的。
所需硬件:
树莓派2
Pi Camera
非必须(如果需要追踪人脸运动,需要一个有两个马达的小云台):
云台
安装OpenCV
安装PiCamera
由于我没有使用USB摄像头,而是用了特殊的Pi Camera,样子如下图, 所以需要安装PiCamera来控制摄像头。
安装PiCamera:
至此人脸识别所需要的准备工作已经完成,可以使用下面的演示代码进行测试。
示例代码
Demo.1
第一个演示只使用单核,由于树莓派的性能有限,在只使用一个CPU核心的情况下视频的帧数非常之低,只有5帧左右,效果不太理想, 另外代码中通过Servo Blaster 控制云台的电机,来实现追踪人脸的功能,不过考虑到这个功能不是必须,所以不在此进行介绍。
另外请注意由于我使用HaarCascade来进行人脸检测, 需要使用到识别人脸的XML,这些人脸识别的XML文件是随着OpenCV一起安装的,不需要额外的安装, 不过当你在自己树莓派上运行时,请注意调整XML文件的路径, 就是调整这一行:
Demo.2
通过同时使用不同的XML文件,可以实现同时识别不同物体的功能,比如下面这段代码可以同时识别人脸和黑色手机,识别手机所需要的XML文件是由Radamés Ajna和Thiago Hersan制作的, 来源在这里。 更进一步的,我们可以根据自己的需要训练自己的Cascade文件,Naotoshi Seo在此处 给出了详细的教程, 比较简易的还有Thorsten Ball的香蕉识别教程。
由于使用了更多的XML文件进行识别,帧数降低到了2~3帧。
Demo.3
为了解决帧数较低的问题,有一个比较简单的方法就是跳帧,可以不对每一帧图像都进行识别,而是隔几帧识别一次(因为最初因为懒不想将程序写成多线程,但是为了提高帧数,所以有了这个蛋疼的方法…)。
这样子帧数会提高到10帧左右,已经不像原来那么卡顿,但是当你移动速度很快的时候,识别框会出现滞后。
Demo.4
毕竟跳帧只是权宜之计,这个版本使用了全部的CPU核心,帧数稳定在了15帧左右。
好了,今天就说到这,有任何问题,欢迎留言。
转载请注明:徐自远的乱七八糟小站 » 【使用树莓派进行简易人脸识别】