python利用OpenCV2实现人脸检测


Posted in Python onApril 16, 2020

最近,带领我的学生进行一个URTP项目设计,需要进行人脸识别。由于现在的OpenCV已经到了2.X版本,因此就不想用原来的1.X版本的代码,而网上存在的代码都是1.X版本的代码,尝试自己写一段2.X版本的代码,反复查阅资料,今天终于测试成功(很明显2.X版本的代码要比1.X的代码更简单),供大家好参考,代码如下:(2017年5月12日在python3.6.1下做一简单的修改)

import cv2
import numpy as np
cv2.namedWindow("test")#命名一个窗口
cap=cv2.VideoCapture(1)#打开1号摄像头
success, frame = cap.read()#读取一桢图像,前一个返回值是是否成功,后一个返回值是图像本身
color = (0,0,0)#设置人脸框的颜色
classfier=cv2.CascadeClassifier("haarcascade_frontalface_alt.xml")#定义分类器
while success:
 success, frame = cap.read()
 size=frame.shape[:2]#获得当前桢彩色图像的大小
 image=np.zeros(size,dtype=np.float16)#定义一个与当前桢图像大小相同的的灰度图像矩阵
 image = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)#将当前桢图像转换成灰度图像(这里有修改)
 cv2.equalizeHist(image, image)#灰度图像进行直方图等距化
 #如下三行是设定最小图像的大小
 divisor=8
 h, w = size
 minSize=(int(w/divisor), int(h/divisor))#这里加了一个取整函数
 faceRects = classfier.detectMultiScale(image, 1.2, 2, cv2.CASCADE_SCALE_IMAGE,minSize)#人脸检测
 if len(faceRects)>0:#如果人脸数组长度大于0
  for faceRect in faceRects: #对每一个人脸画矩形框
    x, y, w, h = faceRect
    cv2.rectangle(frame, (x, y), (x+w, y+h), color)
 cv2.imshow("test", frame)#显示图像
 key=cv2.waitKey(10)
 c = chr(key & 255)
 if c in ['q', 'Q', chr(27)]:
  break
cv2.destroyWindow("test")

效果图:

python利用OpenCV2实现人脸检测

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python的Flask框架下收发电子邮件的教程
Apr 21 Python
深入解析Python中的变量和赋值运算符
Oct 12 Python
Python 安装setuptools和pip工具操作方法(必看)
May 22 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
Jul 27 Python
Python  unittest单元测试框架的使用
Sep 08 Python
python进行TCP端口扫描的实现
Dec 21 Python
Django项目使用CircleCI的方法示例
Jul 14 Python
python GUI图形化编程wxpython的使用
Jul 19 Python
python检测服务器端口代码实例
Aug 31 Python
Python代码需要缩进吗
Jul 01 Python
Python logging模块原理解析及应用
Aug 13 Python
Python全局变量与global关键字常见错误解决方案
Oct 05 Python
Python判断文件和字符串编码类型的实例
Dec 21 #Python
TF-IDF与余弦相似性的应用(二) 找出相似文章
Dec 21 #Python
TF-IDF与余弦相似性的应用(一) 自动提取关键词
Dec 21 #Python
基于Python的文件类型和字符串详解
Dec 21 #Python
Python绘制七段数码管实例代码
Dec 20 #Python
python代码实现ID3决策树算法
Dec 20 #Python
python决策树之CART分类回归树详解
Dec 20 #Python
You might like
PHP一些有意思的小区别
2006/12/06 PHP
PHP 远程关机实现代码
2009/11/10 PHP
浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
2015/10/26 PHP
Extjs显示从数据库取出时间转换JSON后的出现问题
2012/11/20 Javascript
js基于面向对象实现网页TAB选项卡菜单效果代码
2015/09/09 Javascript
JavaScript类型系统之基本数据类型与包装类型
2016/01/06 Javascript
jQuery实现对网页节点的增删改查功能示例
2017/09/18 jQuery
vue-cli创建的项目,配置多页面的实现方法
2018/03/15 Javascript
Layui 设置select下拉框自动选中某项的方法
2018/08/14 Javascript
Vue-router的使用和出现空白页,路由对象属性详解
2018/09/03 Javascript
[01:22:42]2014 DOTA2华西杯精英邀请赛 5 24 DK VS LGD
2014/05/26 DOTA
[53:43]VP vs NewBee Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
python读取html中指定元素生成excle文件示例
2014/04/03 Python
pycharm 使用心得(四)显示行号
2014/06/05 Python
python查看微信好友是否删除自己
2016/12/19 Python
Python 实现引用其他.py文件中的类和类的方法
2018/04/29 Python
对python中的乘法dot和对应分量相乘multiply详解
2018/11/14 Python
python+jinja2实现接口数据批量生成工具
2019/08/28 Python
18个Python脚本可加速你的编码速度(提示和技巧)
2019/10/17 Python
Python字符串格式化输出代码实例
2019/11/22 Python
Python命令行参数定义及需要注意的地方
2020/11/30 Python
采用怎样的方法保证数据的完整性
2013/12/02 面试题
上海期货面试题
2014/01/31 面试题
个人找工作的自我评价
2013/10/17 职场文书
建筑专业毕业生推荐信
2013/11/21 职场文书
大学毕业感言100字
2014/02/03 职场文书
社区春季防火方案
2014/06/02 职场文书
端午节活动总结
2014/08/26 职场文书
国防教育标语
2014/10/08 职场文书
佛光寺导游词
2015/02/10 职场文书
2015年银行客户经理工作总结
2015/04/01 职场文书
2019教师的学习计划
2019/06/25 职场文书
JS中一些高效的魔法运算符总结
2021/05/06 Javascript
PC版《死亡搁浅导剪版》现已发售 展开全新的探险
2022/04/03 其他游戏
java开发双人五子棋游戏
2022/05/06 Java/Android
使用compose函数优化代码提高可读性及扩展性
2022/06/16 Javascript