本帖最后由 windworld-1898442 于 2016-3-20 23:23 编辑
实现人脸识别的方法和途径很多,不过OpenCV 作为开源的计算机视觉软件包,在人脸识别方面相比其他方法更为简单些,在这里我们采用OpenCV相关库数,并Python编程语言下和TigerBoard开发板来实现简单人脸识别,方法如下。
硬件:1. TigerBoar开发板 2. USB免驱摄像头 软件: 1. Python 2. opencv2.4.9及相关依赖包 3. simpleCV函数库 开发环境: 1.Gobian
步骤一:搭建opencv和Python开发环境(如果前面已经搭建好可以忽略)
步骤二:安装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
复制代码 步骤四:Python实现人脸识别程序
- #!/usr/bin/env python
- from SimpleCV import *
- import SimpleCV
- from time import sleep
- #myCamera = Camera(prop_set={'width':320, 'height': 240})
- myCamera =SimpleCV.Camera()
- 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." #如果未检测到人脸打印信息
步骤五:运行程序
这里如果识别到有人脸出现在摄像头范围内,程序会框出人脸,同时Python shell下会打印出具体位置,如果没有检测到人脸则会打印Nofaces detected。
|