当前位置:   article > 正文

opencv人脸识别(二)人脸检测_opencv人脸检测

opencv人脸检测

前面一文我们介绍了电脑打开摄像头,没基础的小伙伴可以点下面链接去看看

 

opencv人脸识别(一)调用笔记本摄像头

本文我将介绍opencv人脸检测,我使用的是LBP特征级联分类器,这个模型是2016年12月21日上传的,使用 OpenCV 的级联分类器 CascadeClassifier加载预训练模型lbpcascade_frontalface_improved.xml,这个模型我放在了迅雷网盘上的地址如下:

链接:https://pan.xunlei.com/s/VN3KgTfLTRfTHox3_bizI4mBA1
提取码:35qw

人脸识别流程:

f0dd92a539ec44648a7e7ca749568f0e.png

 

代码演示:

  1. import cv2
  2. import time
  3. #加载训练模型
  4. face_detect=cv2.CascadeClassifier(r"./data1/lbpcascade_frontalface_improved.xml")
  5. cap=cv2.VideoCapture(0)
  6. while cap.isOpened():
  7. #读取摄像头画面
  8. frla,img=cap.read()
  9. #画面翻转y轴
  10. img=cv2.flip(img,1)
  11. #视频图片经过灰色处理后只有黑白两种颜色,像素的位置并不会改变,便于像素识别
  12. img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
  13. #进行人脸检测
  14. faces = face_detect.detectMultiScale(
  15. img_gray, #进行检测的灰度图片
  16. scaleFactor=1.02,#将检测图片放大1.02被
  17. minNeighbors=5)#表示构成检测目标的相邻矩形的最小个数(默认为3个),这里设置了5个。
  18. #判断是否有人脸
  19. if len(faces):
  20. #遍历检测到的人脸
  21. for x,y,w,h in faces:
  22. #绘制人脸矩形框
  23. cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
  24. if cv2.waitKey(30) & 0xff == ord('q'):
  25. break
  26. if cv2.waitKey(30)&0xff == ord('s'):#按s键保存图片
  27. timer=time.time()#获取时间戳
  28. name=str(int(timer))+".jpg"#将时间戳转换成字符串类型和.jpg拼接,用作下一步的保存图片的名字
  29. cv2.imwrite(name,img)#保存图片
  30. print("图片保存成功")
  31. #显示人脸
  32. cv2.imshow("face",img)
  33. #释放摄像头
  34. cap.release()
  35. #销毁窗口
  36. cv2.destroyAllWindows()
detecMultiScale()

        opencv中人脸检测使用的是 detectMultiScale函数。它可以检测出图片中所有的人脸,并将人脸用vector保存各个人脸的坐标、大小(用矩形表示)所以我们遍历返回的人脸数据faces就可以使用opencv中的rectangle()方法绘制人脸矩形框,函数由分类器对象调用。

函数的相关参数介绍:

参数说明
image待检测图片,使用灰度图识别效果好
objects表示检测到的人脸目标序列
scaleFactor表示每次图像尺寸减小的比例
minNeighbors表示每一个目标至少要被检测到3次才算是真的目标(因为周围的像素和不同的窗口大小都可以检测到人脸),
flags

要么使用默认值,要么使用CV_HAAR_DO_CANNY_PRUNING,如果设置为

        CV_HAAR_DO_CANNY_PRUNING,那么函数将会使用Canny边缘检测来排除边缘过多或过少的区域,

        因此这些区域通常不会是人脸所在区域;

minSize目标最小尺寸
maxSize目标最大尺寸
cv2.rectangle(img, pt1, pt2, color, thickness)

rectangle()经常使用的参数:

参数说明
img要操作的图片
pt1矩形框的左上角坐标
pt2矩形框的右下角坐标
color矩形框线条颜色
thickness矩形框的线条粗细

我使用女神做了测试,我们看看效果:

6e2fe6a118574251804d3cd07276bf74.gif

 我编写的一个opencv人脸识别案例:地址YueXia/Face-opencv - 码云 - 开源中国 (gitee.com)

个人博客网站,灵动空间,欢迎访问

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/822309
推荐阅读
相关标签
  

闽ICP备14008679号