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使用PyGame模块播放声音的方法
May 20 Python
Python实现二叉搜索树
Feb 03 Python
Python OpenCV 直方图的计算与显示的方法示例
Feb 08 Python
Python画柱状统计图操作示例【基于matplotlib库】
Jul 04 Python
django进阶之cookie和session的使用示例
Aug 17 Python
python高级特性和高阶函数及使用详解
Oct 17 Python
Ubuntu下升级 python3.7.1流程备忘(推荐)
Dec 10 Python
python实现狄克斯特拉算法
Jan 17 Python
linux安装python修改默认python版本方法
Mar 31 Python
Flask框架工厂函数用法实例分析
May 25 Python
Django 对IP访问频率进行限制的例子
Aug 30 Python
Python可视化学习之matplotlib内置单颜色
Feb 24 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
ninety plus是什么?ninety plus咖啡好吗?
2021/03/04 新手入门
php下实现伪 url 的超简单方法[转]
2007/09/24 PHP
php smarty模板引擎的6个小技巧
2014/04/24 PHP
PHP中array_map与array_column之间的关系分析
2014/08/19 PHP
PHP 表单提交及处理表单数据详解及实例
2016/12/27 PHP
ThinkPHP 5 AJAX跨域请求头设置实现过程解析
2020/10/28 PHP
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
2011/05/24 Javascript
JavaScript 基本概念
2015/01/20 Javascript
浏览器兼容性问题大汇总
2015/12/17 Javascript
jquery mobile开发常见问题分析
2016/01/21 Javascript
详解vue之页面缓存问题(基于2.0)
2017/01/10 Javascript
JS实现加载时锁定HTML页面元素的方法
2017/06/24 Javascript
详解从Vue.js源码看异步更新DOM策略及nextTick
2017/10/11 Javascript
Three.js加载外部模型的教程详解
2017/11/10 Javascript
小程序实现留言板
2018/11/02 Javascript
小程序实现图片移动缩放效果
2020/05/26 Javascript
Centos5.x下升级python到python2.7版本教程
2015/02/14 Python
详解Python中的循环语句的用法
2015/04/09 Python
python处理二进制数据的方法
2015/06/03 Python
使用Python读写文本文件及编写简单的文本编辑器
2016/03/11 Python
对Python中type打开文件的方式介绍
2018/04/28 Python
python爬取网易云音乐评论
2018/11/16 Python
解决pyinstaller打包pyqt5的问题
2019/01/08 Python
pip指定python位置安装软件包的方法
2019/07/12 Python
Django单元测试中Fixtures用法详解
2020/02/25 Python
美国现代家具和家居商店:Apt2B
2016/08/29 全球购物
基督教卡片、励志礼品、家居装饰等:DaySpring
2018/10/12 全球购物
银行领导班子四风对照检查材料
2014/09/27 职场文书
环境工程专业毕业生求职信
2014/09/30 职场文书
作文评语怎么写
2014/12/25 职场文书
大学生助学金感谢信
2015/01/21 职场文书
兼职安全员岗位职责
2015/02/15 职场文书
python中sqllite插入numpy数组到数据库的实现方法
2021/06/21 Python
Jedis操作Redis实现模拟验证码发送功能
2021/09/25 Redis
Nginx配置根据url参数重定向
2022/04/11 Servers
Mybatis-Plus 使用 @TableField 自动填充日期
2022/04/26 Java/Android