python检测图像中的人脸

编程任务:用python语言编写程序,实现从图像中找出所有的人脸,并对每一张人脸用矩形框做出标记。

关键问题:一是如何调用人脸分类器文件创建人脸检测器以检测图像中的人脸;
二是如何获得图像中人脸范围的数据,并在图像上用图形绘制人脸范围的标记。

设计算法
1.导入cv2库。
2.读入要检测的图像
3.创建人脸检测器。
4.对图像进行灰度处理,进行人脸检测。
5.根据检测到的人脸数据,用矩形框标注人脸。
6.显示标注人脸后的图像。

解决过程

  1. 安装OpenCV扩展库,我用anaconda在这位仁兄的帮助下安装OpenCV成功。
  2. 下载haarcascade_frontalface_default.xml,github上下载不了了,我在这位仁兄的帮助下下载成功
  3. 新建程序后,把图片文件和人脸分类器文件(haarcascade_frontalface_default.xml)放在与py程序文件同一目录下。(分类器的作用是根据已有类别的训练数据,判断一个新样本是否同属该类别。分类器文件是.xml文件类型,如人脸、人体、车牌、猫脸等对应不同的xml。)
  4. 编程
# human_face.py    
import cv2
# 读入图像
img = cv2.imread('face.jpg')   # 读入 ,放在同目录

# 检测图像中的人脸
face = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') # 创建人脸检测器    放在同目录
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#将img转为回复图像,存放中gray中
faces = face.detectMultiScale(gray,1.1,3) # 检测图像中的人脸
for(x,y,w,h) in faces:   # 标注人脸区域
    cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),4)
    
cv2.imshow('result',img)  #显示
cv2.waitKey(0)   #按任意键退出
cv2.destroyAllWindows()  #关闭所有窗口
  1. 运行效果
    原图就不呈现了。原图来源网络。
    python检测图像中的人脸_第1张图片

最后,觉得有用的猿友赏个赞,鼓励笔者继续输出。

你可能感兴趣的:(python)