**学科:**人工智能 | 年级: 七年级上 |
---|---|
**课题:**第15课时 人脸检测 | 课时数:1 |
教学目标:
理解人脸检测的原理;
能够读懂人脸检测代码;
掌握级联分类器CascadeClassifier的使用方法;
教学重点:
理解人脸检测的原理。
教学难点:
级联分类器CascadeClassifier的使用方法。
教学准备:
示例图片,程序代码文件(!!所有的图片、代码必须以英文命名)
教 学 过 程
一、开放导入
现在市面上绝大部分的手机拍照都具有人脸检测功能,它能在拍照时检测画面中是否出现人脸,如果检测到,便在人脸上画一个矩形,并可以在时对该区域进行美化,实现美颜的效果。
人脸检测是人工智能领域一个重要的应用分支,本节课我们就来学习制作一个简单的人脸检测器。
二、核心过程推进
1.人脸检测原理
我们将人脸看作二维像素矩阵;
然后通过大量人脸图像样本构造出人脸检测模型;
最后根据相似度量来判断检测图片中是否有人脸。
2.人脸检测器
人脸检测器的功能是从一个图像中找出人脸的位置和大小,并使用矩形标示出来。
人脸检测难点在于构建准确的人脸检测模型,人脸检测模型越准确,人脸识别率也就越高。 幸运的是,OpenCV提供了级联分类器(CascadeClassifier)和人脸检测模型(Faces.xml),我们只需要使用几行代码就可以实现人脸检测功能。
import cv2
#从文件读取图像并转为灰度图像
img = cv2.imread('gdg03.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#创建人脸检测器
file = 'faces.xml'
face_cascade = cv2.CascadeClassifier(file)
#检测人脸区域
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
#标注人脸区域
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
cv2.imshow('Image', img) #显示检测结果
cv2.waitKey(0) #按任意键退出
cv2.destroyAllWindows() #关闭窗口
opencv在做人脸识别时需要使用灰度图,所以需要先将彩色图转换为灰度图;
检测人脸区域 1.3和5这个两个数值取值越大,准确率越高,但识别率则会越低,试着将两个数减小或增大,看看检测效果会发生什么变化?
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
练习
分别检测素材中的含有人脸的图片,通过调整1.3和5的数值,使其能够准确的检测出图片中的人脸。
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
三、开放延伸
通过本节课的学习,对于图片修改你有哪些收获呢?