当前位置: 移动技术网 > IT编程>脚本编程>Python > python3.6.3+opencv3.3.0实现动态人脸捕获

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

2019年06月17日  | 移动技术网IT编程  | 我要评论

邢台人事局网,安卓高德地图离线包,dnf土罐的黄金斗篷礼盒

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

步骤

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

程序

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()

运行后如下:

这里写图片描述

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网