树莓派(八)——用摄像头拍照识别人脸并保存到指定位置

在第五部分《SimpleCV库的安装和简单使用》中,我们介绍了如何安装和调试SimpleCV库,并进入simplecv的shell进行了拍照和展示,后面还简单的介绍了如何编写Python脚本来完成同样的效果。

但是,要实现我们物联网应用的效果,还需要一些更强大的函数来帮助我们完成我们想要的功能,我们现在并不需要完全理解其函数的实现原理,只需要学会合理地使用函数即可。同学们如果有兴趣也可以找找源码看一下,这样更能提高我们的代码能力。

下面开始介绍本文的重点:

 

人脸识别

SimpleCV有一个很强大的函数——findHaarFeatures,这是一个在图像中搜索匹配某一种特定模式(或称cascade)的算法,在SimpleCV中自带了几种模式,包括脸、鼻子、眼睛、嘴和身体。如果必要,你也可以下载或生成你自己的模式文件。findHaarFeatures可以分析图像并从中匹配出对应的模式,然后返回匹配到的部分在图像中的位置。这就意味着,你可以从像文件或摄像头捕获的图像中匹配汽车、动物或人。

下面以人脸识别为例,实验一下findHaarFeatures的功能。

#coding:utf-8      //指定编码格式为utf8
from SimpleCV import *            //导入SimpleCV所有的库
from time import sleep 


cam = Camera()    //初始化摄像头

disp = Display()    //定义一个窗口对象

while disp.isNotDone():   
    frame = cam.getImage()    //拍摄一张照片

    segment = HaarCascade("face.xml")    //导入face.xml文件并赋给segment

    autoface = frame.findHaarFeatures(segment)    //检测刚才拍到的照片中有没有人脸

    if ( autoface is not None ):
        face = autoface[-1].crop()   //将照片中的人脸“扣”下来
        face.save(disp)    //保存当前窗口
        face.save("myface.jpg")   //保存图片到当前目录下
        f = open('/var/www/html/face.txt', mode='w')   //打开/var/www/html/face.txt
        f.write('Nice~~~ I get your handsome face!')   //向face.txt写入一段话,用于测试
        time.sleep(5)    //5秒钟之后程序结束

将上述代码编辑保存并运行后,将摄像头对准人脸拍照,过一会之后,就可以看到屏幕上会显示一张人脸,并且这张图片会保存到当前目录下。(因为树莓派性能问题,运行的比较慢)

如果屏幕成功显示一张人脸,并且有myface.jpg保存到当前运行程序的目录下,说明人脸识别成功!

接下来同学们就可以根据自己的需求,进一步设计自己想要实现的效果了。

你可能感兴趣的:(树莓派(八)——用摄像头拍照识别人脸并保存到指定位置)