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中__init__和__new__的区别详解
Jul 09 Python
python根据出生年份简单计算生肖的方法
Mar 27 Python
python对html代码进行escape编码的方法
May 04 Python
Python制作简易注册登录系统
Dec 15 Python
Python递归函数定义与用法示例
Jun 02 Python
python机器学习实战之最近邻kNN分类器
Dec 20 Python
如何使用python传入不确定个数参数
Feb 18 Python
浅谈python3 构造函数和析构函数
Mar 12 Python
解决Python paramiko 模块远程执行ssh 命令 nohup 不生效的问题
Jul 14 Python
解决Pyinstaller打包软件失败的一个坑
Mar 04 Python
使用Pytorch实现two-head(多输出)模型的操作
May 28 Python
python实现一个简单的贪吃蛇游戏附代码
Jun 28 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
destoon在360浏览器下出现用户被强行注销的解决方法
2014/06/26 PHP
php实现点击可刷新验证码
2015/11/07 PHP
JQuery 常用方法和事件详细介绍
2013/04/18 Javascript
100个不能错过的实用JS自定义函数
2014/03/05 Javascript
Node.js模拟浏览器文件上传示例
2014/03/26 Javascript
使用AngularJS和PHP的Laravel实现单页评论的方法
2015/06/19 Javascript
JS根据生日月份和日期计算星座的简单实现方法
2016/11/24 Javascript
移动适配的几种方案(三种方案)
2016/11/25 Javascript
利用pm2部署多个node.js项目的配置教程
2017/10/22 Javascript
百度地图去掉marker覆盖物或者去掉maker的label文字方法
2018/01/26 Javascript
JS代码实现电脑配置检测功能
2018/03/21 Javascript
Vue.js 实现数据展示全部和收起功能
2018/09/05 Javascript
vue实现pdf导出解决生成canvas模糊等问题(推荐)
2018/10/18 Javascript
每个 JavaScript 工程师都应懂的33个概念
2018/10/22 Javascript
详解Webpack如何引入CDN链接来优化编译后的体积
2019/06/21 Javascript
微信小程序获取地理位置及经纬度授权代码实例
2019/09/18 Javascript
vue路由分文件拆分管理详解
2020/08/13 Javascript
详解MySQL数据类型int(M)中M的含义
2016/11/20 Python
Python用sndhdr模块识别音频格式详解
2018/01/11 Python
python Spyder界面无法打开的解决方法
2018/04/27 Python
Python基本socket通信控制操作示例
2019/01/30 Python
python面向对象法实现图书管理系统
2019/04/19 Python
Python Numpy数组扩展repeat和tile使用实例解析
2019/12/09 Python
python with语句的原理与用法详解
2020/03/30 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
2020/04/30 Python
使用pandas库对csv文件进行筛选保存
2020/05/25 Python
TensorFlow低版本代码自动升级为1.0版本
2021/02/20 Python
化学教师自荐信范文
2013/12/28 职场文书
简历上的自我评价怎么写
2014/01/28 职场文书
路政管理求职信
2014/06/18 职场文书
计算机应用专业自荐信
2014/07/05 职场文书
红领巾广播站广播稿
2014/10/19 职场文书
2014年银行客户经理工作总结
2014/11/12 职场文书
学生检讨书
2015/01/27 职场文书
讲文明倡议书
2015/04/29 职场文书
MySQL提升大量数据查询效率的优化神器
2022/07/07 MySQL