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 遍历字符串(含汉字)实例详解
Apr 04 Python
python将unicode转为str的方法
Jun 21 Python
人生苦短我用python python如何快速入门?
Mar 12 Python
基于python神经卷积网络的人脸识别
May 24 Python
Python实现的NN神经网络算法完整示例
Jun 19 Python
Python实现按逗号分隔列表的方法
Oct 23 Python
Python中一般处理中文的几种方法
Mar 06 Python
OpenCV 模板匹配
Jul 10 Python
pytorch进行上采样的种类实例
Feb 18 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
Oct 21 Python
安装Anaconda3及使用Jupyter的方法
Oct 27 Python
Python列表元素删除和remove()方法详解
Jan 04 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
WIFI万能钥匙密码查询接口实例
2015/09/28 PHP
PHP实现QQ登录的开原理和实现过程
2018/02/04 PHP
php7函数,声明,返回值等新特性介绍
2018/05/25 PHP
laravel 根据不同组织加载不同视图的实现
2019/10/14 PHP
JavaScript 的方法重载效果
2009/08/07 Javascript
Js获取事件对象代码
2010/08/05 Javascript
web的各种前端打印方法之jquery打印插件jqprint实现网页打印
2013/01/09 Javascript
Js 冒泡事件阻止实现代码
2013/01/27 Javascript
DIV始终居中的js代码
2014/02/17 Javascript
使用text方法获取Html元素文本信息示例
2014/09/01 Javascript
Redis基本知识、安装、部署、配置笔记
2015/03/05 Javascript
JavaScript中的some()方法使用详解
2015/06/09 Javascript
js实现TAB切换对应不同颜色的代码
2015/08/31 Javascript
js实现索引图片切换效果
2015/11/21 Javascript
Underscore源码分析
2015/12/30 Javascript
基于jQuery实现点击最后一行实现行自增效果的表格
2016/01/12 Javascript
JavaScript SweetAlert插件实现超酷消息警告框
2016/01/28 Javascript
微信小程序 Tab页切换更新数据
2017/01/05 Javascript
jQuery插件select2利用ajax高效查询大数据列表(可搜索、可分页)
2017/05/19 jQuery
JS判断一个数是否是水仙花数
2017/06/11 Javascript
JQuery EasyUI 结合ztrIee的后台页面开发实例
2017/09/01 jQuery
详解RequireJs官方使用教程
2017/10/31 Javascript
15个简单的JS编码标准让你的代码更整洁(小结)
2020/07/16 Javascript
[46:44]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
布同自制Python函数帮助查询小工具
2011/03/13 Python
用Python和MD5实现网站挂马检测程序
2014/03/13 Python
Python命令行参数解析模块optparse使用实例
2015/04/13 Python
TensorFlow神经网络优化策略学习
2018/03/09 Python
python如何制作英文字典
2019/06/25 Python
Python性能分析工具Profile使用实例
2019/11/19 Python
python等差数列求和公式前 100 项的和实例
2020/02/25 Python
python 瀑布线指标编写实例
2020/06/03 Python
经销商培训邀请函
2014/01/21 职场文书
结婚保证书范文
2014/04/29 职场文书
文员转正自我鉴定怎么写
2014/09/29 职场文书
化妆品促销活动总结
2015/05/07 职场文书