发 帖  
原厂入驻New
[资料] 【LeMaker Guitar试用体验】之基于Python下的人脸识别系统【结贴】
2016-2-25 14:03:15  4587 人脸识别 摄像头
分享
本帖最后由 windworld 于 2017-1-22 11:26 编辑

     OpenCV 作为开源的计算机视觉软件包,在人脸识别方便也具有很广泛的应用,在这里我们采用opencv相关库数,在python编程语言下实现基于LeMaker Guitar的人脸识别系统,具体方案操作如下。
一.实验说明

系统设备:
1.LeMakerGuitar开发板
2.蓝色妖姬免驱USB摄像头
辅助软件:
1.Python2.7
2.Python GPIO
3.opencv2.4.9及相关依赖包
4.simpleCV函数库
开发环境:
1.Ubuntu_Mate_For_Guitar
二.实现过程

步骤一:搭建opencv和Python开发环境
opencv开发环境搭建方法:【LeMaker Guitar试用体验】之opencv环境搭建并测试http://bbs.elecfans.com/jishu_549254_1_1.html
Python因为Ubuntu_Mate_For_Guitar中自带Python2和Python3,所以我们这里无需重新安装,实验系统采用的是Python2来实现的

步骤二:安装SimpleCV库函数
  1. sudo apt-get install ipython python-opencv python-scipy python-numpy python-setuptools
  2. python-pip
  3. sudo pip install https://github.com/ingenuitas/SimpleCV/zipball/master
  4. sudo apt-get install python-pygame
  5. sudo apt-get install python-imaging
复制代码
步骤三:开发插入UVC摄像头并测试
【LeMaker Guitar试用体验】之摄像头驱动测试

步骤四:Python实现人脸识别程序

  1. #!/usr/bin/env python

  2. # author: Powen Ko

  3. from SimpleCV import *

  4. from time import sleep

  5. myCamera = Camera(prop_set={'width':320, 'height': 240})

  6. mydisplay = Display(resolution=(320, 240))

  7. while not myDisplay.isDone():

  8.    frame = myCamera.getImage()

  9.    faces = frame.findHaaRFeatures('face')

  10.    IF faces:

  11.      for face in faces:

  12.         print "Face at: " + str(face.coordinates())

  13.         facelayer = DrawingLayer((frame.width,frame.height))

  14.         w=face.width()

  15.         h=face.height()

  16.         print "x:"+str(w)+" y:"+str(h)

  17.         facebox_dim = (w,h)

  18.         facebox = facelayer.centeredRectangle(face.coordinates(),facebox_dim)

  19.         frame.addDrawingLayer(facelayer)

  20.         frame.applyLayers()

  21.    else:

  22.         print "No faces detected."

  23.    frame.save(myDisplay)

  24.    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.单张人脸识别
7.png

2.多张人脸识别效果
9.png

(注:上面图片为手机上任意百度到的图片进行识别的,方便测试而已)

四.总结

    识别过程时间较长,但识别效果整体来非常不错。可根据自己需要DIY各种不同人脸识别小玩意,这里采用的是findHaarFeatures('face')来进行人的脸部识别,我们还可以进行其他部位的识别如:眼睛、耳朵、鼻子、嘴巴的识别。当然opencv还远不止这些,后面有待慢慢学习,希望大家感兴趣的一起学习多多交流!

1
分享淘帖 显示全部楼层
· 2016-2-25 20:40:40
不错不错,感谢分享!
· 2016-2-26 19:32:07
学习一下,顶起来!!!!!!!!!!!!!!!!
· 2016-2-26 23:03:47
谢谢分享学习一下
· 2016-2-29 08:47:51
学习了,楼主辛苦
· 2016-2-29 14:33:13
看起来效果不错呀!你们这些图片是使用什么工具截下来的?
· 2016-2-29 16:21:37
xianyoudian 发表于 2016-2-26 23:03
谢谢分享学习一下

· 2016-2-29 16:22:26
MAT_BB 发表于 2016-2-29 14:33
看起来效果不错呀!你们这些图片是使用什么工具截下来的?

这个我是通过远程管理桌面,然后windows截图的,你也可以直接用linux下的截图工具
· 2016-2-29 22:00:54
图片的背景都比较单调,在复杂背景下的识别率怎么样。
· 2016-3-2 17:22:58
看起来已经结束了试用哦, 真心不错。
· 2016-3-2 18:48:57
本帖最后由 windworld 于 2016-3-2 18:50 编辑
MAT_BB 发表于 2016-2-29 14:33
看起来效果不错呀!你们这些图片是使用什么工具截下来的?

你可以试试scrot
· 2016-3-2 18:50:21
jinyi7016 发表于 2016-2-29 22:00
图片的背景都比较单调,在复杂背景下的识别率怎么样。

识别率还是挺不错的,多张人脸识别基本上也都没问题
· 2016-3-2 18:51:38
柠檬守护 发表于 2016-3-2 17:22
看起来已经结束了试用哦, 真心不错。

没啊 后面有了其他外设好玩的继续分享
· 2016-3-2 20:30:52
windworld 发表于 2016-3-2 18:51
没啊 后面有了其他外设好玩的继续分享

· 2016-3-4 21:18:13

好的,我回头试试,谢谢您!
· 2016-3-4 21:21:14
MAT_BB 发表于 2016-3-4 21:18
好的,我回头试试,谢谢您!

只有小组成员才能发言,加入小组>>

11个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表