内容正文:
中物理
第二单元 让机器认识我
川教版(2020) 信息技术(八年级上册)
第3节 “认出”一个人
学易同步精品课堂
1
课堂导入
同学们:上节课我们学习了计算机能够通过图片或视频“认识”一个人。
今天这节课我们要来测试一下看看计算机能否“认出”一个人,下面我们就一起来学习。
学习目标
1. 了解基于图片的人脸识别预测。
2. 体验基于视频的人脸识别预测过程。
3. 了解人脸识别技术的应用领域。
2
目录
一、如何从图片“认出”一个人
二、识别预测
三、人脸识别技术的应用
如何从图片“认出”一个人
一
一、如何从图片“认出”一个人
如何从图片“认出”一个人
一
计算机通过机器学习已经“认识”一个人,知道其人脸特征了,接着就可以输入照片进行人脸识别预测,看看计算机能不能“认出”这个人。基于图片的人脸识别预测的过程如下图。
输入测试图片
识别预测
输出预测结果
识别预测
二
二、识别预测
识别预测
二
基于OpenCV的人脸识别预测使用了LBPH识别器中的predict()函数,它返回识别预测的标签值和置信度评分。本节使用上一节中两张图片“img01.jpg”和“img02.jpg”机器训练的结果,来测试人脸识别的效果。
第一步:人脸识别
对测试图片进行人脸识别,只需要在“人脸识别训练程序”代码中加入一段人脸识别预测代码,对测试图片“test01.jpg” 进行人脸识别。
识别预测
二
人脸识别的完整程序代码如下。
import cv2
import numpy as np
images=[]
images.append(cv2.imread('img01.jpg',cv2.IMREAD_GRAYSCALE))
images.append(cv2.imread('img02.jpg',cv2.IMREAD_GRAYSCALE))
labels=[0,0]
recognizer=cv2.face.LBPHFaceRecognizer_create()
recognizer.train(images,np.array(labels))
predict_img=cv2.imread('test01.jpg',cv2.IMREAD_GRAYSCALE)
label,confidence=recognizer.predict(predict_img)
print('label=',label)
print('confidence=',confidence)
人脸识别预测代码
识别预测
二
运行结果如下图,输出显示label值为0,表示测试图片和之前的标签“0”是同一个人;confidenee是置信度评分,如果为0则表示完全匹配,此程序显示约为22.18,表示相似度比较高。
人脸识别预测程序运行结果
识别预测
二
请同学们思考一下:如果测试图片是另外一个人的照片,那人脸识别预测的结果会怎样?
第二步:认出不同的人
在“两个不同的人脸的识别训练程序”代码中添加一段人脸识别预测代码,对测试图片“test10.jpg” 进行人脸识别。
识别预测
二
两个不同的人脸的识别完整的代码如下。
import cv2
import numpy as np
images=[]
images.append(cv2.imread('img01.jpg',cv2.IMREAD_GRAYSCALE))
images.append(cv2.imread('img02.jpg',cv2.IMREAD_GRAYSCALE))
images.append(cv2.imread('img11.jpg',cv2.IMREAD_GRAYSCALE))
images.append(cv2.imread('img12.jpg',cv2.IMREAD_GRAYSCALE))
labels=[0,0,1,1]
recognizer=cv2.face.LBPHFaceRecognizer_create()
recognizer.train(images,np.array(labels))
predict_img=cv2.imread('test10.jpg',cv2.IMREAD_GRAYSCALE)
label,confidence=recognizer.predict(predict_img)
print('label=',label)
print('confidence=',confidence)
识别预测
二
运行结果如下图,label显示为1,表示测试图片和后面的标签“1”是同一个人;confidence显示约为24.45,表示相似度比较高。
有的同学可能会发出疑问:这个程序识别的结果不容易让人看懂,能不能直接在测试图的人脸位置处标注出识别出的姓名呢?答案是肯定的,我们来看