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 21 Python
Python使用openpyxl读写excel文件的方法
Jun 30 Python
python+matplotlib演示电偶极子实例代码
Jan 12 Python
python unittest实现api自动化测试
Apr 04 Python
Python数据结构之图的应用示例
May 11 Python
使用python将大量数据导出到Excel中的小技巧分享
Jun 14 Python
在numpy矩阵中令小于0的元素改为0的实例
Jan 26 Python
Python通过TensorFlow卷积神经网络实现猫狗识别
Mar 14 Python
python 中不同包 类 方法 之间的调用详解
Mar 09 Python
Python面向对象程序设计之类和对象、实例变量、类变量用法分析
Mar 23 Python
python实现密码验证合格程序的思路详解
Jun 01 Python
基于Tensorflow的MNIST手写数字识别分类
Jun 17 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编码转换
2012/11/05 PHP
PHP如何利用P3P实现跨域
2013/08/24 PHP
10条php编程小技巧
2015/07/07 PHP
PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
2017/02/04 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
javascript 学习之旅 (3)
2009/02/05 Javascript
js post方式传递提交的实现代码
2010/05/31 Javascript
JavaScript中window、doucment、body的解释
2013/08/14 Javascript
简单js代码实现selece二级联动(推荐)
2014/02/18 Javascript
javascript动态向网页中添加表格实现代码
2014/02/19 Javascript
使用JS+plupload直接批量上传图片到又拍云
2014/12/01 Javascript
javascript操作Cookie(设置、读取、删除)方法详解
2015/03/18 Javascript
jquery实现的Banner广告收缩效果代码
2015/09/02 Javascript
深入浅析同源策略和跨域访问
2015/11/26 Javascript
jquery对dom节点的操作【推荐】
2016/04/15 Javascript
Nodejs实现短信验证码功能
2017/02/09 NodeJs
原生JS实现图片懒加载(lazyload)实例
2017/06/13 Javascript
vue实现仿淘宝结账页面实例代码
2017/11/08 Javascript
layui table设置前台过滤转义等方法
2018/08/17 Javascript
Vue.js组件间通信方式总结【推荐】
2018/11/23 Javascript
js中的深浅拷贝问题简析
2019/05/10 Javascript
js前端如何写一个精确的倒计时代码
2019/10/25 Javascript
[49:20]2014 DOTA2国际邀请赛中国区预选赛5.21 CIS VS TongFu
2014/05/22 DOTA
Python tempfile模块学习笔记(临时文件)
2014/05/25 Python
使用Pyinstaller的最新踩坑实战记录
2017/11/08 Python
一步步教你用python的scrapy编写一个爬虫
2019/04/17 Python
python实现智能语音天气预报
2019/12/02 Python
浅析Python的命名空间与作用域
2020/11/25 Python
澳大利亚运动鞋零售商:The Athlete’s Foot
2018/11/04 全球购物
运动鞋、街头服装、手表和手袋的实时市场:StockX
2020/11/25 全球购物
init进程的作用
2015/08/20 面试题
工程技术员岗位职责
2014/03/02 职场文书
大学军训感言400字
2014/03/11 职场文书
儿园租房协议书范本
2014/12/02 职场文书
2015年化验员工作总结
2015/04/10 职场文书
MySQL的安装与配置详细教程
2021/06/26 MySQL