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中传递参数到URLconf的视图函数中的方法
Jul 18 Python
python高手之路python处理excel文件(方法汇总)
Jan 07 Python
简析Python的闭包和装饰器
Feb 26 Python
在Python程序和Flask框架中使用SQLAlchemy的教程
Jun 06 Python
关于Python面向对象编程的知识点总结
Feb 14 Python
Python实现mysql数据库更新表数据接口的功能
Nov 19 Python
python pandas dataframe 行列选择,切片操作方法
Apr 10 Python
python3+PyQt5实现柱状图
Apr 24 Python
Django使用unittest模块进行单元测试过程解析
Aug 02 Python
python入门之井字棋小游戏
Mar 05 Python
python脚本第一行如何写
Aug 30 Python
python利用platform模块获取系统信息
Oct 09 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版)
2006/10/09 PHP
利用PHP将图片转换成base64编码的实现方法
2016/09/13 PHP
PHP微信企业号开发之回调模式开启与用法示例
2017/11/25 PHP
jQuery中对节点进行操作的相关介绍
2013/04/16 Javascript
JavaScript拆分字符串时产生空字符的解决方案
2014/09/26 Javascript
js结合正则实现国内手机号段校验
2015/06/19 Javascript
js自调用匿名函数的三种写法(推荐)
2016/08/19 Javascript
JavaScript实现二分查找实例代码
2017/02/22 Javascript
javascript回调函数详解
2018/02/06 Javascript
layui框架table 数据表格的方法级渲染详解
2018/08/19 Javascript
vue.js中使用echarts实现数据动态刷新功能
2019/04/16 Javascript
Vue学习之常用指令实例详解
2020/01/06 Javascript
jQuery cookie的公共方法封装和使用示例
2020/06/01 jQuery
[02:41]DOTA2英雄基础教程 谜团
2013/12/10 DOTA
[50:45]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第一场
2018/04/10 DOTA
[01:06:59]完美世界DOTA2联赛PWL S2 Magma vs FTD 第一场 11.29
2020/12/02 DOTA
Python做文本按行去重的实现方法
2016/10/19 Python
python spyder中读取txt为图片的方法
2018/04/27 Python
Python在for循环中更改list值的方法【推荐】
2018/08/17 Python
python实现狄克斯特拉算法
2019/01/17 Python
Python面向对象程序设计类的多态用法详解
2019/04/12 Python
基于Django静态资源部署404的解决方法
2019/07/28 Python
Python读取csv文件实例解析
2019/12/30 Python
深入浅析python的第三方库pandas
2020/02/13 Python
贝玲妃美国官方网站:Benefit美国
2016/08/28 全球购物
美国羊皮公司:Overland
2018/01/15 全球购物
日本卡普空电视游戏软件公司官方购物网站:e-CAPCOM
2018/07/17 全球购物
EJB timer的种类
2014/10/28 面试题
如何用Python来进行查询和替换一个文本字符串
2014/01/02 面试题
会计专业自荐信范文
2013/12/02 职场文书
护士毕业生自荐信
2014/02/07 职场文书
《老王》教学反思
2014/02/23 职场文书
小学生十佳少年事迹材料
2014/08/20 职场文书
运动会开幕词
2015/01/28 职场文书
民事申诉状范本
2015/05/20 职场文书
SpringBoot前端后端分离之Nginx服务器下载安装过程
2022/08/14 Servers