首页 > 编程 > Python > 正文

python3.6.3+opencv3.3.0实现动态人脸捕获

2019-11-25 14:40:30
字体:
来源:转载
供稿:网友

本文实例为大家分享了python实现动态人脸捕获的具体代码,供大家参考,具体内容如下

步骤

  1. 载入cv2
  2. 捕获摄像头
  3. 获取第一帧图像
  4. 定义人脸识别信息
  5. 开始循环
  6. 对第一帧图像进行识别
  7. 标示脸部特征和方框
  8. 显示帧
  9. 如果一切正常则读入下一帧
  10. 循环直至捕获失败
  11. 如果键入‘q'退出循环
  12. 循环结束清零

程序

import cv2import numpy as npcv2.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()

运行后如下:

这里写图片描述

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表