python3.6.3+opencv3.3.0实现动态人脸捕获
作者:艾克思工作室 发布时间:2022-12-21 11:59:41
标签:python,opencv,人脸捕获
本文实例为大家分享了python实现动态人脸捕获的具体代码,供大家参考,具体内容如下
步骤
载入cv2
捕获摄像头
获取第一帧图像
定义人脸识别信息
开始循环
对第一帧图像进行识别
标示脸部特征和方框
显示帧
如果一切正常则读入下一帧
循环直至捕获失败
如果键入‘q'退出循环
循环结束清零
程序
import cv2
import numpy as np
cv2.namedWindow("Face_Detect") #定义一个窗口
cap=cv2.VideoCapture(0) #捕获摄像头图像
success,frame=cap.read() #读入第一帧
classifier=cv2.CascadeClassifier("C:/opencv-3.3.0/data/haarcascades/haarcascade_frontalface_alt.xml")
**#定义人脸识别的分类数据集,需要自己查找,在opencv的目录下,参考上面我的路径**
while success:#如果读入帧正常
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)) #像素一定是整数,或者用w//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),2) #圆形轮廓
cv2.circle(frame,(x+w//4,y+2*h//5),min(w//8,h//8),(0,255,0),2) #左眼轮廓
cv2.circle(frame,(x+3*w//4,y+2*h//5),min(w//8,h//8),(0,255,0),2)#右眼轮廓
cv2.circle(frame,(x+w//2,y+2*h//3),min(w//8,h//8),(0,255,0),2) #鼻子轮廓
cv2.rectangle(frame, (x, y), (x+w, y+h), (0,0,255),2) #矩形轮廓
cv2.imshow("Face_Detect",frame)
#显示轮廓
success,frame=cap.read()#如正常则读入下一帧
c=chr(key&255)
if c in ['q','Q',chr(27)]:#如果键入‘q'退出循环
print('exit'\n)
break#退出循环
#循环结束则清零
cap.release()
cv2.destroyAllWindows()
运行后如下:
来源:https://blog.csdn.net/m0_37606112/article/details/78278427


猜你喜欢
- 可能各位朋友看到这个标题很不解,到底什么是习惯化,什么又是去习惯化?下面我来慢慢介绍我的个人理论。习惯化:随着对刺激的熟悉,人们越来越注意不
- 前言上一篇博客我们知道的Mysql事务的隔离机制和实现,以及锁的详细解析链接: MySQL脏读幻读不可重复读及事务的隔离级别和MVCC、LB
- 之前在做数据分析的过程中,需要对数据进行实时的写入,比如对新生成的数据写入之前已经生成的txt或csv文件中。现在想想其实很简单,所以做一个
- 从微信小程序官方发布的公告中我们可获知:小程序体验版、开发版调用 wx.getUserInfo 接口,将无法弹出授权询问框,默认调用失败,需
- OpenCV中circle与rectangle函数显示,只不过rectangle在图像中画矩形,circle在图像中画圆。void circ
- 一、设计范式问题: 什么是范式化设计,为什么需要反规范化设计 ?范式来自来自英文Normal From 。开发过程中要设计一个好的数据库逻辑
- 用asp程序进行网页设计,大多因为需要访问数据库,然后再将数据显示到页面,如果数据很多的话,页面的访问速度也就变慢了,为了解决这个问题,可以
- 下面给大家介绍Javascript removeChild()删除节点的方法,具体详情如下所示:在Javascript中,只提供了一种删除节
- 什么是装饰器?装饰器(Decorator)相对简单,咱们先介绍它:“装饰器的功能是将被装饰的函数当作参数传递给与装饰器对应的函数(名称相同的
- 摘要:将英文单词首字母变成大写是一个古老的话题,很常用,也很简单。不过如何用更简单的方式批量完成这个工作,则有很多学问,不想来看看吗!将英文
- 如何用通过Web访问OLAP数据? <% Set Conn=Server.CreateObject(″A
- 在学习傅里叶变换的时候遇到了求周期方波信号频谱图的例子,在书上和网上查阅了一些资料,发现大都是讨论的都是下图左边的周期信号的频谱,课程老师的
- 可以在Mac OS X 10.2.x(“Jaguar”)和以上版本上Mac OS X使用二进制安装软件包的PKG格式代替二进制分发版来安装M
- 有时候导入本地模块或者py文件时,下方会出现红色的波浪线,但不影响程序的正常运行,但是在查看源函数文件时,会出现问题问题如下:解决方案:1.
- 1 基本概念1.1 命名空间 (namespace)命名空间是变量名到对象的映射(name -> obj)。目前大多数的命名空间以类似
- 什么是计算属性???1、在computed中,可以定义一些属性,这些属性叫做【计算属性】2、计算属性的本质是一个方法,不过一般是将他们的名称
- 目录前言:一、query和params(1)query方式传参和接收参数(2)params方式传参和接收参数二、从后台渲染列表(4)根据id
- 本文实例为大家分享了python实现定时发送邮件到指定邮箱的具体代码,供大家参考,具体内容如下整个链路:传感器采集端采集数据,边缘端上传数据
- 就是在mysql命令行登录的时候加上: --pager=more 参数可以使用linux下的more来分页,很好用
- 数据是企业核心资产,数据对企业而言是最重要的工作之一。稍有不慎,极有可能发生数据无意泄露,甚至被黑客恶意窃取的风险。每年业界都会传出几起大事