中小学教育资源及组卷应用平台
广东高等教育版信息技术八年级下册第二单元第4课教学设计
课题 第4课检测图像中的人脸 单元 第二单元 学科 信息技术 年级 八年级
学习 目标 了解OpenCV库的功能。 初步了解分类器的作用。 理解cv2.imread()、cv2.imshow()、cv2.rectangle()函数的功能与用法。 掌握用OpenCV库检测图像中人脸的方法与步骤。
重点 理解cv2.imread()、cv2.imshow()、cv2.rectangle()函数的功能与用法。
难点 掌握用OpenCV库检测图像中人脸的方法与步骤。
教学过程
教学环节 教师活动 学生活动 设计意图
导入新课 观看图形。随着人工智能时代的到来,人脸识别技术得到了广泛的应用,如火车站人脸识别进站、银行刷脸取款、支付宝和微信等人脸识别支付等。 人脸检测是人脸识别的重要基础。如何从图像中检测出人脸呢? 如图2-4-2所示,当用智能手机拍照时,怎样确定手机已经检测到人脸呢? 观看、欣赏、思考 激发学生的学习兴趣,了解日常生活中的人脸识别检测 。
讲授新课 分析问题 本课的任务是编写程序从图片中找出所有人的脸,并对每一张脸用矩形框做出标记,如图2-4-3所示:程序要解决的关键问题: 一是如何调用人脸分类器文件创建人脸检测器以检测图像中的人脸; 二是如何获得图像中的人脸范围的数据,并在图像上用图形绘制人脸范围的标记。 要解决这两个问题,在程序中需要利用到OpenCV库。二、学习新知(一)OpenCV库 OpenCV库是一个跨平台的计算机视觉库,可以运行在Linux、Windows、Android、MacOS操作系统上。可以处理图像识别、目标检测、图像分割和行人再识别等主流视觉任务。 OpenCV库在Python3中使用的名称是cv2。如下图:(二)分类器 分类器的作用是根据已有类别的训练数据,判断一个新样本是否同属该类别。 例如,利用猫脸分类器文件‘haarcascade_fronttalcatface.xml’来检测一张图像是否有猫脸的程序如下:探究: 运行猫脸检测程序cat_face.py,了解猫脸检测的流程,体会各函数的作用,并将表2-4-1补充完整。三、设计算法 1、导入cv2库 2、读入人脸检测图像 3、创建人脸检测器 4、对图像进行灰度处理,进行人脸检测 5、根据检测到的人脸数据,用矩形框标注人脸 6、显示标注人脸后的图像 四、编写程序 (一)读入图像 读入图像是人脸检测的第一步,我们先用cv2的函数读入一个图像并显示出来。实践: 完善并运行程序human_face.py,读入和显示待检测人脸的图像,观察运行结果。 检测图像中的人脸 在读入图像后,接下来需要创建人脸检测器进行人脸检测,并根据检测到的人脸数据用矩形框标注人脸区域。探究: 在程序human_face.py的基础上,添加创建人脸检测器、检测人脸区域和标注人脸区域的代码,完成人脸检测程序,然后用该程序检测班级活动照片中的人脸。实践与创作: 车牌自动识别系统随处可见,该系统首先要做的是车牌检测,请利用教材配套资源中的车辆图像和车牌特征分类器文件,编写一个车牌检测程序,检测结果按图2-4-5所示用矩形框标出来实践与评估在Python中导入OpenCV库的命令是import cv2 2、cv2库的__cv2.imread()函数可以读入一个图像,cv2.imshow()函数用来在指定窗口中显示图像 3、在本课人脸检测程序中,关于语句faces=face.detectMultiScale(gray,1.2,4),下列说法错误的是(D) A、detectMultiScale()函数用来检测人脸 B、检测到的人脸数据存放在faces列表 C、参数1.2表示每次扫描后将图像缩小20%,再进行下一次扫描 D、参数4表示最多检测到的人脸个数为4 4、请完善下列程序,在图’photo.jpg’中画出线条宽度为5的红色圆 进行探究,初步了解程序解决的关键问题。 了解OpenCV库。 了解分类器的作用及类别。 操作、实践 了解读入图像的的用法。 教师讲解,学生听讲,了解检测图像中的人脸。 掌握标注人脸区域的用法。 自主探究,学生理解和掌握。 动手导入OpenCV库。 听讲、了解。 学生听老师讲解,了解创建人脸检测器。
课堂小结 学生回答 利用问题形式进行总结
板书 一、分析问题 二、学习新知 (一)OpenCV库 (二)分类器 三、设计算法 四、编写程序 (一)读入图像 (二)检测图像中的人脸
21世纪教育网 www.21cnjy.com 精品试卷·第 2 页 (共 2 页)
HYPERLINK "http://www.21cnjy.com/" 21世纪教育网(www.21cnjy.com)
(共41张PPT)
第 4 课 检测图像中的人脸
——OpenCV 库的应用
广东高等教育出版 第八册下
新知导入
图 2-4-1 支付宝人脸识别
新知讲解
随着人工智能时代的到来,人脸识别技术得到了广泛的应用,如火车站人脸识别进站、银行刷脸取款、支付宝和微信等人脸识别支付等。
人脸检测是人脸识别的重要基础。如何从图像中检测出人脸呢?
快
门
乐
新知讲解
交
流
如图2-4-2所示,当用智能手机拍照时,怎样确定手机已经检测到人脸呢?
新知讲解
图 2-4-2 手机拍照的人脸检测
新知讲解
一、分析问题
本课的任务是编写程序从图片中找出所有人的脸,并对每一张脸用矩形框做出标记,如图2-4-3所示:
新知讲解
图 2-4-3 图像中的人脸检测效果
新知讲解
程序要解决的关键问题:一是如何调用人脸分类器文件创建人脸检测器以检测图像中的人脸;二是如何获得图像中的人脸范围的数据,并在图像上用图形绘制人脸范围的标记。
要解决这两个问题,在程序中需要利用到OpenCV库。
新知讲解
二、学习新知
OpenCV库是一个跨平台的计算机视觉库,可以运行在Linux、Windows、Android、MacOS操作系统上。可以处理图像识别、目标检测、图像分割和行人再识别等主流视觉任务。 OpenCV库在Python3中使用的名称是cv2。
(一)OpenCV库
新知讲解
在DOS方式中安装OpenCV库的命令为:
pip install opencv-python
在Python中导入OpenCV库(cv2)的命令为:
import cv2
新知讲解
分类器的作用是根据已有类别的训练数据,判断一个新样本是否同属该类别。
例如,利用猫脸分类器文件‘haarcascade_fronttalcatface.xml’来检测一张图像是否有猫脸的程序如下:
(二)分类器
新知讲解
#car_face.py
import cv2 #导入cv2库
#读入待检的图像文件,存到img中
img=cv2.imread(‘images/catl.jpg’)
#创建名为face的猫脸检测器
face=cv2.CascadeClassifier(‘haarcascade_frontalcatface.xml’)
#将img中的图像转为灰度图像,存到gray中
新知讲解
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
faces=faces.detectMultiScale(gray,1.2,5) #检测gray中所有的猫脸
for (x,y,w,h) in face: #从列表face中读取所有的猫脸数据
#在每张猫脸上画矩形框
cv2.rectangle(img,(x,y),(x+w,y+h),(0,0,255),3)
cv2.imshow(‘result’,img) #在result窗口中显示已检测的图像
cv2.waitKey(0) #按任意键退出
cv2.destroyAllWindows() #关闭所有窗口
新知讲解
运行猫脸检测程序cat_face.py,了解猫脸检测的流程,体会各函数的作用,并将表2-4-1补充完整。
探
究
新知讲解
函数 作用
cv2.imread() 读入图像
cv2.CascadeClassifier() 创建检测器
cv2.cvtColor() 转换图片颜色
face.detectMultiScale() 检测图像中所有的“猫脸”,并记录各张脸的左上角坐标及宽与高
cv2.rectangle()
cv2.imshow()
cv2.waitKey() 等待按下任意键
cv2.destroyAllWindows()
表 2-4-1 cv2库的部分函数
在指定窗口中显示所有检测到的图像
关闭所有窗口
用矩形框标注检测到的猫脸
新知讲解
三、设计算法
根据前面图像中人脸检测的任务分析,参考猫脸检测的流程,实现图像中人脸检测的算法思路如下:
新知讲解
1、导入cv2库
2、读入人脸检测图像
3、创建人脸检测器
4、对图像进行灰度处理,进行人脸检测
5、根据检测到的人脸数据,用矩形框标注人脸
6、显示标注人脸后的图像
新知讲解
四、编写程序
(一)读入图像
读入图像是人脸检测的第一步,我们先用cv2的函数读入一个图像并显示出来。
新知讲解
探
究
完善并运行程序human_face.py,读入和显示待检测人脸的图像,观察运行结果。
新知讲解
# human_face.py
import cv2 #导入cv2库
img=______________(‘images/face1.jpg’) #从文件夹face1.jpg中读入图像文件face1.jpg
_____________(‘result’,img) #在result窗口显示图像
cv2.waitKey(0) #按任意键退出
cv2.destroyAllWindows() #关闭所有窗口
cv2.imread
cv2.imshow
新知讲解
(二)检测图像中的人脸
在读入图像后,接下来需要创建人脸检测器进行人脸检测,并根据检测到的人脸数据用矩形框标注人脸区域。
新知讲解
1、创建人脸检测器
face=cv2.CascadeClassifier(‘haarcascade_frontalface_default.xml’)
用cv2.CascadeClassifier()函数创建一个名为face的人脸检测器,代码如下。
其中,参数“haarcascade_frontalface_default.xml”是人脸检测器文件
新知讲解
2、检测人脸区域
(1)用cv2.cvtcolor()将img中的图像转换为灰度图像,存放在gray中
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
其中,参数cv2.COLOR_BGR2GRAY表示将img中的图像转换为灰度图像,检测灰度图像可以降低计算强度,加快检测速度
新知讲解
face=face.detectMultiScale(gray,1.1,3)
(2)用face.detectMultiScale()函数检测图像中的人脸
新知讲解
函数名detectMultiScale()前要加上前面定义的检测器对象名称“face”作为前缀。函数的第一个参数gray中存放的是前面以转换的灰度图像;第二个参数1.1表示待检测图像在多次扫描中,会逐步按1:1:1的比例缩小进行扫描;第三个参数3表示每一张人脸至少要检测到3次才确定为人脸。检测结果包含人脸区域左上角的坐标、人脸的宽度和高度,存放到face元组中。
新知讲解
3、标注人脸区域
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),4)
用for循环读取face中的所有人脸数据,获得每张人脸区域的左上角坐标(x,y)、宽w和高h,逐一用cv2.rectangle()函数的原图像img上画矩形。
该函数的参数含义如图2-4-4所示
新知讲解
图2-4-4 cv2.rectangle() 函数参数的含义
新知讲解
实
践
在程序human_face.py的基础上,添加创建人脸检测器、检测人脸区域和标注人脸区域的代码,完成人脸检测程序,然后用该程序检测班级活动照片中的人脸。
新知讲解
实践与创作
车牌自动识别系统随处可见,该系统首先要做的是车牌检测,请利用教材配套资源中的车辆图像和车牌特征分类器文件,编写一个车牌检测程序,检测结果按图2-4-5所示用矩形框标出来
新知讲解
图 2-4-5 车牌检测
检测与评估
1、在Python中导入OpenCV库的命令是_______________
2、cv2库的______________函数可以读入一个图像,_______________函数用来在指定窗口中显示图像
拓展新知
cv2.imread()
import cv2
cv2.imshow()
3、在本课人脸检测程序中,关于语句faces=face.detectMultiScale(gray,1.2,4),下列说法错误的是( )
A、detectMultiScale()函数用来检测人脸
B、检测到的人脸数据存放在faces列表中
C、参数1.2表示每次扫描后将图像缩小20%,再进行下一次扫描
D、参数4表示最多检测到的人脸个数为4
拓展新知
D
4、请完善下列程序,在图’photo.jpg’中画出线条宽度为5的红色圆
拓展新知
#image.py
import cv2
color=(0,0,255) #将红色值存到color中
img=cv2._________(‘photo.jpg’) #读入图像
cv2.circle(______,(480,300),100,color,___) #画一个半径100的圆
cv2.imshow(‘image’,img)
cv2.waitKey(0)
cv2.destroyAllWindows()
拓展新知
imread
img
5
5、完成表2-4-2的学习评估,并将评估等级填写到“我的成长记录袋”中。
拓展新知
拓展新知
评估项目 掌握程度 我在本课学习中的最大收获和不足
较好 一般 较差
了解OpenCV库的功能
初步了解分类器的作用
理解cv2.imread()、cv2.imshow()、cv2.rectangle()函数的功能与用法
掌握用OpenCV库检测图像中人脸的方法与步骤
会利用各种分类器文件编程检测图像中的目标
我的学习效果达到了______等级
表2-3-1 学习评估表
课堂总结
一、用函数cv2.CascadeClassifier()和人脸分类(‘haarcascade_frontalface_default.xml’)器创建人脸检测器,存在face中
二、检测人脸区域
(1)用cv2.cvtcolor()将img中的图像转换为灰度图像,存放在gray中
face=cv2.CascadeClassifier(‘haarcascade_frontalface_default.xml’)
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
课堂总结
(2)用face.detectMultiScale()函数检测图像中的人脸
三、标注人脸区域
face=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)
板书设计
一、分析问题
二、学习新知
(一)OpenCV库
(二)分类器
三、设计算法
四、编写程序
(一)读入图像
(二)检测图像中的人脸
谢谢
21世纪教育网(www.21cnjy.com) 中小学教育资源网站
有大把高质量资料?一线教师?一线教研员?
欢迎加入21世纪教育网教师合作团队!!月薪过万不是梦!!
详情请看:
https://www.21cnjy.com/help/help_extract.php