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 27 Python
Python使用cx_Oracle模块操作Oracle数据库详解
May 07 Python
python3使用smtplib实现发送邮件功能
May 22 Python
python 筛选数据集中列中value长度大于20的数据集方法
Jun 14 Python
python批量复制图片到另一个文件夹
Sep 17 Python
python制作mysql数据迁移脚本
Jan 01 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
Apr 11 Python
Python socket模块方法实现详解
Nov 05 Python
计算pytorch标准化(Normalize)所需要数据集的均值和方差实例
Jan 15 Python
python多项式拟合之np.polyfit 和 np.polyld详解
Feb 18 Python
推荐技术人员一款Python开源库(造数据神器)
Jul 08 Python
Python加密技术之RSA加密解密的实现
Apr 08 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获取http请求的头信息实现步骤
2012/12/16 PHP
基于php设计模式中工厂模式详细介绍
2013/05/15 PHP
php异步多线程swoole用法实例
2014/11/14 PHP
PHP使用逆波兰式计算工资的方法
2015/07/29 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
2017/12/21 PHP
javascript 哈希表(hashtable)的简单实现
2010/01/20 Javascript
jQuery 常见操作实现方式和常用函数方法总结
2011/05/06 Javascript
js判断iframe内的网页是否滚动到底部触发事件
2014/03/18 Javascript
JavaScript中的call方法和apply方法使用对比
2015/08/12 Javascript
JavaScript实现的多个图片广告交替显示效果代码
2015/09/04 Javascript
Javascript中this关键字指向问题的测试与详解
2017/08/11 Javascript
使用store来优化React组件的方法
2017/10/23 Javascript
实现jquery放大镜的两种方法
2018/02/22 jQuery
Vue.directive()的用法和实例详解
2018/03/04 Javascript
js点击事件的执行过程实例分析【冒泡与捕获】
2020/04/11 Javascript
uni-app使用微信小程序云函数的步骤示例
2020/05/22 Javascript
如何在vue中使用jointjs过程解析
2020/05/29 Javascript
[05:43]VG.R战队教练Mikasa专访:为目标从未停止战斗
2016/08/02 DOTA
python实现简单购物商城
2016/05/21 Python
详解Python之数据序列化(json、pickle、shelve)
2017/03/30 Python
Python MD5加密实例详解
2017/08/02 Python
Python开发最牛逼的IDE——pycharm
2018/08/01 Python
Python全局变量与局部变量区别及用法分析
2018/09/03 Python
python实现对图片进行旋转,放缩,裁剪的功能
2019/08/07 Python
python函数局部变量、全局变量、递归知识点总结
2019/11/15 Python
苹果中国官方网站:Apple中国
2016/07/22 全球购物
俄罗斯家居用品购物网站:Евродом
2020/11/21 全球购物
如何处理简单的PHP错误
2015/10/14 面试题
Linux如何命名文件--使用文件名时应注意
2014/05/29 面试题
如何用JQuery进行表单验证
2013/05/29 面试题
市场营销专业个人求职信范文
2013/12/14 职场文书
小学英语课后反思
2014/04/26 职场文书
社区个人对照检查材料(群众路线)
2014/09/26 职场文书
四风问题民主生活会对照检查材料思想汇报
2014/09/27 职场文书
公司股份转让协议书范本
2015/01/28 职场文书
python实现学员管理系统(面向对象版)
2022/06/05 Python