编程任务:用python语言编写程序,实现从图像中找出所有的人脸,并对每一张人脸用矩形框做出标记。
关键问题:一是如何调用人脸分类器文件创建人脸检测器以检测图像中的人脸;
二是如何获得图像中人脸范围的数据,并在图像上用图形绘制人脸范围的标记。
设计算法:
1.导入cv2库。
2.读入要检测的图像
3.创建人脸检测器。
4.对图像进行灰度处理,进行人脸检测。
5.根据检测到的人脸数据,用矩形框标注人脸。
6.显示标注人脸后的图像。
解决过程:
# 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() #关闭所有窗口
最后,觉得有用的猿友赏个赞,鼓励笔者继续输出。