python结合opencv实现人脸检测与跟踪


Posted in Python onJune 08, 2015

模式识别课上老师留了个实验,在VC++环境下利用OpenCV库编程实现人脸检测与跟踪。

然后就开始下载opencv和vs2012,再然后,配置了好几次还是配置不成功,这里不得不吐槽下微软,软件做这么大,这么难用真的好吗?

于是就尝试了一下使用python完成实验任务,大概过程就是这样子的:

首先,配置运行环境:

下载opencv和python的比较新的版本,推荐opencv2.4.X和python2.7.X。

直接去官网下载就ok了,python安装时一路next就行,下载的opencv.exe文件运行后基本上是一个解压的过程,自己选择一个解压路径(尽量不要出现中文),然后就坐等解压完成。

然后从opencv解压后的路径中找(D:\My Documents\Downloads)\opencv\build\python\2.7\x86,()里面的部分是你自己的安装路径,其中x86对应32位的机器,x64代表64位的机器,当然要按照你机器的实际情况选择了。将这个路径里面的cv2.pyd拷贝至python2.7的模块路径C:\Python27\Lib\site-packages里,python2.7默认安装在C盘跟目录下。

此时打开python,在cmd下输入python,或者直接打开“所有程序->active state active python->Python Interactive Shell”都行。

接下来输入import cv2,出错了对不对?为什么呢?

这是因为没有安装numpy这个python模块,去numpy的官网下载一个比较新的版本,因为最新的版本一般都是源代码,需要去命令行中安装,比较麻烦,推荐找一个exe文件。注意,在官网给出的链接中,切记看完全名称,后面一般都会提示这个模块在哪个python版本下安装时比较和谐,选择你自己安装的python版本对应的numpy模块。下载完成后安装时看一下该模块给出的python路径对不对,对的话然后next就行了,不对的话可能就是你的python是2.7,却下了numpy for python 3.0.

这时再去import一下cv2,如果什么也没有输出的话就是import成功了。

简直比vs下的配置简单了好几个数量级,对不对?

配置好环境后,跟着opencv嗨起来!

然后在pythonwin或idle(python gui)下新建一个py文件,输入以下代码:

import cv2
import numpy as np
cv2.namedWindow("test")
cap=cv2.VideoCapture(0)
success,frame=cap.read()
classifier=cv2.CascadeClassifier("haarcascade_frontalface_alt.xml")   #确保此xml文件与该py文件在一个文件夹下,否则将这里改为绝对路径,此xml文件可在D:\My Documents\Downloads\opencv\sources\data\haarcascades下找到。

while success:
success,frame=cap.read()

size=frame.shape[:2]

image=np.zeros(size,dtype=np.float16)

image=cv2.cvtColor(frame,cv2.cv.CV_BGR2GRAY)

cv2.equalizeHist(image,image)

divisor=8

h,w=size

minSize=(w/divisor,h/divisor)

faceRects=classifier.detectMultiScale(image,1.2,2,cv2.CASCADE_SCALE_IMAGE,minSize)

if len(faceRects)>0:


for faceRect in faceRects:



x,y,w,h=faceRect



cv2.circle(frame,(x+w/2,y+h/2),min(w/2,h/2),(255,0,0))



cv2.circle(frame,(x+w/4,y+h/4),min(w/8,h/8),(255,0,0))



cv2.circle(frame,(x+3*w/4,y+h/4),min(w/8,h/8),(255,0,0))



cv2.rectangle(frame,(x+3*w/8,y+3*h/4),(x+5*w/8,y+7*h/8),(255,0,0))

cv2.imshow("test",frame) 

key=cv2.waitKey(10)

c=chr(key&255)

if c in ['q','Q',chr(27)]:


break
cv2.destroyWindow("test")

为什么没有注释,你恐怕知道下雨天,dir()和help()更配呦。

这段代码的功能就是对计算机摄像头拍到的视频加以处理,使其显示并追踪人脸。下图是运行效果:

python结合opencv实现人脸检测与跟踪

最后再说一句,这个过程说起来简单,但很容易出错,希望大家能自己找到错误的原因,并解决错误。如果自己解决不了的话,不妨把问题贴在评论里,大家来共同解决,共同进步。

以上所述就是本文的全部内容了,希望大家能够喜欢。

Python 相关文章推荐
django 自定义用户user模型的三种方法
Nov 18 Python
浅谈Python生成器generator之next和send的运行流程(详解)
May 08 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
Nov 11 Python
浅谈Python 列表字典赋值的陷阱
Jan 20 Python
详解Python连接MySQL数据库的多种方式
Apr 16 Python
Python定时任务APScheduler的实例实例详解
Jul 22 Python
浅谈python已知元素,获取元素索引(numpy,pandas)
Nov 26 Python
Django Form常用功能及代码示例
Oct 13 Python
Python实现简单的猜单词小游戏
Oct 28 Python
基于django和dropzone.js实现上传文件
Nov 24 Python
Python新建项目自动添加介绍和utf-8编码的方法
Dec 26 Python
利用Python读取微信朋友圈的多种方法总结
Aug 23 Python
python实现数值积分的Simpson方法实例分析
Jun 05 #Python
python采集百度百科的方法
Jun 05 #Python
python中引用与复制用法实例分析
Jun 04 #Python
Python进程间通信用法实例
Jun 04 #Python
python中__slots__用法实例
Jun 04 #Python
python协程用法实例分析
Jun 04 #Python
Python获取系统默认字符编码的方法
Jun 04 #Python
You might like
教你IIS6的PHP最佳配置方法
2006/09/05 PHP
基于PHP CURL获取邮箱地址的详解
2013/06/03 PHP
ThinkPHP的MVC开发机制实例解析
2014/08/23 PHP
php使用pdo连接并查询sql数据库的方法
2014/12/24 PHP
JavaScrip单线程引擎工作原理分析
2010/09/04 Javascript
基于jQuery的实现简单的分页控件
2010/10/10 Javascript
extjs 如何给column 加上提示
2014/07/29 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
超链接怎么正确调用javascript函数
2016/05/23 Javascript
vue-cli webpack 开发环境跨域详解
2017/05/18 Javascript
JavaScript中一些特殊的字符运算
2017/08/17 Javascript
vue-cli 目录结构详细讲解总结
2019/01/15 Javascript
php结合js实现多条件组合查询
2019/05/28 Javascript
详解nvm管理多版本node踩坑
2019/07/26 Javascript
vue 的 solt 子组件过滤过程解析
2019/09/07 Javascript
JavaScript进阶(一)变量声明提升实例分析
2020/05/09 Javascript
[43:58]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第二局
2016/02/27 DOTA
用Python的urllib库提交WEB表单
2009/02/24 Python
python实现端口转发器的方法
2015/03/13 Python
python实现QQ批量登录功能
2019/06/19 Python
小白教你PyCharm从下载到安装再到科学使用PyCharm2020最新激活码
2020/09/25 Python
基于css3的属性transition制作菜单导航效果
2015/09/01 HTML / CSS
伦敦所有西区剧院演出官方票务代理:Theatre Tickets Direct
2017/05/26 全球购物
意大利自行车商店:Cingolani Bike Shop
2019/09/03 全球购物
JNI的定义
2012/11/25 面试题
北京一家公司的.net开发工程师笔试题
2012/04/17 面试题
教师推荐信范文
2013/11/24 职场文书
电子商务专业学生的自我鉴定
2013/11/28 职场文书
会计岗位职责范本
2014/03/07 职场文书
小学生环保演讲稿
2014/04/25 职场文书
人事任命书范文
2014/06/04 职场文书
家庭贫困证明
2015/06/16 职场文书
2015年小学语文教师工作总结
2015/10/23 职场文书
python 实现德洛内三角剖分的操作
2021/04/22 Python
关于React Native使用axios进行网络请求的方法
2021/08/02 Javascript
Oracle安装TNS_ADMIN环境变量设置参考
2021/11/01 Oracle