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 相关文章推荐
Python中列表、字典、元组、集合数据结构整理
Nov 20 Python
python实现将文本转换成语音的方法
May 28 Python
python在控制台输出进度条的方法
Jun 20 Python
Python打印斐波拉契数列实例
Jul 07 Python
举例讲解Python中的Null模式与桥接模式编程
Feb 02 Python
python使用tornado实现登录和登出
Jul 28 Python
python3利用venv配置虚拟环境及过程中的小问题小结
Aug 01 Python
python实现的自动发送消息功能详解
Aug 15 Python
Python根据服务获取端口号的方法
Sep 25 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
Jun 03 Python
使paramiko库执行命令时在给定的时间强制退出功能的实现
Mar 03 Python
python scrapy简单模拟登录的代码分析
Jul 21 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
探讨PHP中OO之静态关键字以及类常量的详解
2013/06/07 PHP
PHP中使用hidef扩展代替define提高性能
2015/04/09 PHP
PHP整合PayPal支付
2015/06/11 PHP
用ADODB.Stream转换
2007/01/22 Javascript
Mootools 1.2教程(2) DOM选择器
2009/09/14 Javascript
基于JQuery的6个Tab选项卡插件
2010/09/03 Javascript
基于Jquery制作的幻灯片图集效果打包下载
2011/02/12 Javascript
js setTimeout()函数介绍及应用以倒计时为例
2013/12/12 Javascript
IE6中链接A的href为javascript协议时不在当前页面跳转
2014/06/05 Javascript
jQuery获取页面及个元素高度、宽度的总结——超实用
2015/07/28 Javascript
微信企业号开发之微信考勤百度地图定位
2015/09/11 Javascript
jQuery AjaxUpload 上传图片代码
2016/02/02 Javascript
详解JavaScript对象类型
2016/06/16 Javascript
AngularJs Injecting Services Into Controllers详解
2016/09/02 Javascript
js中开关变量使用实例
2017/02/24 Javascript
鼠标经过出现气泡框的简单实例
2017/03/17 Javascript
关于jQuery里prev()的简单操作代码
2017/10/27 jQuery
微信小程序如何获取openid及用户信息
2018/01/26 Javascript
Vue组件创建和传值的方法
2018/08/17 Javascript
layui内置模块layim发送图片添加加载动画的方法
2019/09/23 Javascript
vue中axios的二次封装实例讲解
2019/10/14 Javascript
[00:16]热血竞技场
2019/03/06 DOTA
Python 调用Java实例详解
2017/06/02 Python
python2.6.6如何升级到python2.7.14
2018/04/08 Python
Python脚本完成post接口测试的实例
2018/12/17 Python
python openvc 裁剪、剪切图片 提取图片的行和列
2019/09/19 Python
python 判断txt每行内容中是否包含子串并重新写入保存的实例
2020/03/12 Python
python 如何上传包到pypi
2020/12/24 Python
使用css创建三角形 使用CSS3创建3d四面体原理及代码(html5实践)
2013/01/06 HTML / CSS
罗技美国官网:Logitech美国
2020/01/22 全球购物
.NET里面如何取得当前的屏幕分辨率
2012/12/06 面试题
中英文自我评价语句
2013/12/20 职场文书
应届电子商务毕业自荐书范文
2014/02/11 职场文书
2014年出纳工作总结与计划
2014/12/09 职场文书
SQL Server Agent 服务无法启动
2022/04/20 SQL Server
源码安装apache脚本部署过程详解
2022/09/23 Servers