本帖最后由 windworld 于 2017-1-22 11:26 编辑
OpenCV作为开源的计算机视觉软件包,在人脸识别方便也具有很广泛的应用,在这里我们采用opencv相关库数,在Python编程语言下实现基于LeMaker Guitar的人脸识别系统,具体方案操作如下。
一.实验说明
系统设备:
2.蓝色妖姬免驱USB摄像头
辅助软件:
1.Python2.7
2.Python GPIO库
3.opencv2.4.9及相关依赖包
4.simpleCV函数库
开发环境:
1.Ubuntu_Mate_For_Guitar
二.实现过程
步骤一:搭建opencv和Python开发环境
Python因为Ubuntu_Mate_For_Guitar中自带Python2和Python3,所以我们这里无需重新安装,实验系统采用的是Python2来实现的
步骤二:安装SimpleCV库函数
- sudo apt-get install ipython python-opencv python-scipy python-numpy python-setuptools
- python-pip
- sudo pip install https://github.com/ingenuitas/SimpleCV/zipball/master
- sudo apt-get install python-pygame
- sudo apt-get install python-imaging
复制代码
步骤三:开发插入UVC摄像头并测试
【LeMaker Guitar
试用体验】之摄像头驱动测试
步骤四:Python实现人脸识别程序
- #!/usr/bin/env python
- # author: Powen Ko
- from SimpleCV import *
- fromtime import sleep
- myCamera = Camera(prop_set={'width':320, 'height': 240})
- myDisplay = Display(resolution=(320, 240))
- while not myDisplay.isDone():
- frame = myCamera.getImage()
- faces = frame.findHaarFeatures('face')
- if faces:
- for face in faces:
- print "Face at: " + str(face.coordinates())
- facelayer = DrawingLayer((frame.width,frame.height))
- w=face.width()
- h=face.height()
- print "x:"+str(w)+" y:"+str(h)
- facebox_dim = (w,h)
- facebox = facelayer.centeredRectangle(face.coordinates(),facebox_dim)
- frame.addDrawingLayer(facelayer)
- frame.applyLayers()
- else:
- print "No faces detected."
- frame.save(myDisplay)
- sleep(.1)
复制代码
程序说明:
myCamera =Camera(prop_set={'width':320, 'height': 240})
#指定摄像头影像尺寸
myDisplay =Display(resolution=(320, 240))
#显示窗口大小
frame =myCamera.getImage()
#获取视频流摄像头影像
faces =frame.findHaarFeatures('face')
#寻找人脸
facebox =facelayer.centeredRectangle(face.coordinates(),facebox_dim)
frame.addDrawingLayer(facelayer)
#框出识别到的人脸并把图层放到画面上
print "Nofaces detected."
#如果未检测到人脸打印信息
PS:这里可以改为控制GPIO来实现其他功能,如控制门禁等
三.实现效果
1.单张人脸识别
2.多张人脸识别效果
(注:上面图片为
手机上任意百度到的图片进行识别的,方便测试而已)
四.总结
识别过程时间较长,但识别效果整体来非常不错。可根据自己需要DIY各种不同人脸识别小玩意,这里采用的是findHaarFeatures('face')来进行人的脸部识别,我们还可以进行其他部位的识别如:眼睛、耳朵、鼻子、嘴巴的识别。当然opencv还远不止这些,后面有待慢慢学习,希望大家感兴趣的一起学习多多交流!
1