安装好了SimpleCV,接下来我们来试一试人脸定位的功能,注意我们现在做的事人脸定位而不是人脸识别,这里主要利用的是Haar分类器,具体原理我就不在这里展开了,下面介绍
from SimpleCV import *
Img=Image("display.jpg")
faces = Img.findHaarFeatures('face.xml')
if faces:
<span style="white-space:pre"> </span>for face in faces:
print "Face at"+str(face.coordinates())
face.draw(Color.RED,1)
else:
break
Img.save("display2.jpg")
利用python语言,首先加载SimpleCV库,然后Image("display.jpg") 加载图片,findHaarFeatures函数调用Haar分类器,训练的样本为face.xml即人脸定位,函数返回值为识别到的人脸数据。然后对于识别到的每一张脸打印出人脸的位置并在人脸上划上红色的方框,并保存在display2.jpg中
2.针对摄像头的人脸定位
from SimpleCV import *
import time
display= Display()
my =Camera()
while display.isNotDone():
Img = my.getImage()
faces = Img.findHaarFeatures('face.xml')
if faces:
for face in faces:
#print "Face at"+str(face.coordinates())
face.draw(Color.RED,1)
Img.show()
重复的地方,不再赘述,这里主要的区别就是图像来源变成了camera,while display.isNotDone() 表示如果显示窗口没有被人为关闭(即按下x),Img=my.getImage(),是从摄像头截图,截图打上人脸识别方框后,Img.show负责回显在桌面对话框中,由于回显过程在while循环下,就相当于连续输出摄像头的动态画面。
3.问题
如果大家在使用过程中pygame出现问题,无法画出方框,极有可能是pygame安装时没有安装font库,解决办法是去编译安装SDL_ttf (依赖SDL1.2)和freetype(版本大于2.4.8),相关pygame依赖的说明请参考pygame。当然利用bananapro处理的时候画面十分卡顿,cpu性能堪忧!