赞
踩
# num_components:可选参数,PCA方法中保留的分量个数,建议使用默认值。threshold:可选参数,人脸识别器使用的阔值,建议使用默认值
recognizer = cv2.FaceRecognizerSF_create(num_components, threshold)
# src:用来训练的人脸图像样本列表,格式为list。样本图像宽、高一致。labels:样本对应的标签,格式为数组,元素类型为整数。数组长度必须与样本列表长度相同,样本与标签一一对应。
recognizer.train(src, labels)
# 训练识别器后通过识别器的predict()方法识别人脸
# src:需要识别的人脸图像(该图像宽、高必须与样本一致);label:与样本匹配度最高的标签值;confidence:匹配度最高的评分(评分<5000匹配程度较高,0分表示2张图片完全一样)
label, confidence = recognizer.predict(src)
import cv2 import numpy as np photos = list() # 样本图像列表 lables = list() # 标签列表 # append()函数只适用于列表list(),对于字典、元组或者集合需要转换成list类型 photos.append(cv2.imread("images\\hdy\\Elvis1.png", 0)) # 记录Elvis1人脸照片 lables.append(0) # Elvis11对应的标签 photos.append(cv2.imread("images\\hdy\\Elvis2.png", 0)) # 记录Elvis2人脸照片 lables.append(0) # Elvis12对应的标签 photos.append(cv2.imread("images\\hdy\\Elvis3.png", 0)) # 记录Elvis3人脸照片 lables.append(0) # Elvis13对应的标签 photos.append(cv2.imread("images\\hdy\\summer1.png", 0)) # 记录summer1人脸照片 lables.append(1) # summer1对应的标签 photos.append(cv2.imread("images\\hdy\\summer2.png", 0)) # 记录summer2人脸照片 lables.append(1) # summer2对应的标签 photos.append(cv2.imread("images\\hdy\\summer3.png", 0)) # 记录summer3人脸照片 lables.append(1) # summer3对应的标签 names = {"0":"Elvis", "1":"summer"} # 标签对应的名称字典 # 下面是OpenCV级联分类器中 recognizer = cv2.face.EigenFaceRecognizer_create() # 创建EigenFace特征脸识别器 # recognizer = cv2.face.FisherFaceRecognizer_create() # 创建FisherFace特征脸识别器 # recognizer = cv2.face.LBPHFaceRecognizer_create() # 创建FisherFace特征脸识别器 # 要确保需要训练的照片的尺寸大小一致,不然不可以训练 recognizer.train(photos, np.array(lables)) # 识别器开始训练 i = cv2.imread("images\\hdy\\summer4.png", 0) # 待识别的人脸图像summer4.png label, confidence = recognizer.predict(i) # 识别器开始分析人脸图像(label:标签;confidence:置信度) print("confidence = " + str(confidence)) # 打印置信度 print(names[str(label)]) # 数组字典中里标签对应的名字 cv2.waitKey() cv2.destroyAllWindows()
运行结果
import cv2 import numpy as np photos = list() # 样本图像列表 lables = list() # 标签列表 # append()函数只适用于列表list(),对于字典、元组或者集合需要转换成list类型 photos.append(cv2.imread("images\\hdy\\Elvis1.png", 0)) # 记录Elvis1人脸照片 lables.append(0) # Elvis11对应的标签 photos.append(cv2.imread("images\\hdy\\Elvis2.png", 0)) # 记录Elvis2人脸照片 lables.append(0) # Elvis12对应的标签 photos.append(cv2.imread("images\\hdy\\Elvis3.png", 0)) # 记录Elvis3人脸照片 lables.append(0) # Elvis13对应的标签 photos.append(cv2.imread("images\\hdy\\summer1.png", 0)) # 记录summer1人脸照片 lables.append(1) # summer1对应的标签 photos.append(cv2.imread("images\\hdy\\summer2.png", 0)) # 记录summer2人脸照片 lables.append(1) # summer2对应的标签 photos.append(cv2.imread("images\\hdy\\summer3.png", 0)) # 记录summer3人脸照片 lables.append(1) # summer3对应的标签 names = {"0":"Elvis", "1":"summer"} # 标签对应的名称字典 # 下面是OpenCV级联分类器中 # recognizer = cv2.face.EigenFaceRecognizer_create() # 创建EigenFace特征脸识别器 recognizer = cv2.face.FisherFaceRecognizer_create() # 创建FisherFace特征脸识别器 # recognizer = cv2.face.LBPHFaceRecognizer_create() # 创建FisherFace特征脸识别器 # 要确保需要训练的照片的尺寸大小一致,不然不可以训练 recognizer.train(photos, np.array(lables)) # 识别器开始训练 i = cv2.imread("images\\hdy\\summer4.png", 0) # 待识别的人脸图像 label, confidence = recognizer.predict(i) # 识别器开始分析人脸图像 print("confidence = " + str(confidence)) # 打印评分 print(names[str(label)]) # 数组字典中里标签对应的名字 cv2.waitKey() cv2.destroyAllWindows()
import cv2 import numpy as np photos = list() # 样本图像列表 lables = list() # 标签列表 photos.append(cv2.imread("images\\hdy\\hdy1.png", 0)) # 记录hdy1人脸照片 lables.append(0) # hdy1对应的标签 photos.append(cv2.imread("images\\hdy\\hdy2.png", 0)) # 记录hdy2人脸照片 lables.append(0) # hdy2对应的标签 photos.append(cv2.imread("images\\hdy\\hdy3.png", 0)) # 记录hdy3人脸照片 lables.append(0) # hdy3对应的标签 photos.append(cv2.imread("images\\hdy\\pig1.png", 0)) # 记录pig1人脸照片 lables.append(1) # pig1对应的标签 photos.append(cv2.imread("images\\hdy\\pig2.png", 0)) # 记录pig2人脸照片 lables.append(1) # pig2对应的标签 photos.append(cv2.imread("images\\hdy\\pig3.png", 0)) # 记录pig3人脸照片 lables.append(1) # pig3对应的标签 names = {"0":"hdy", "1":"pig"} # 标签对应的名称字典 # 下面是OpenCV级联分类器中 # recognizer = cv2.face.EigenFaceRecognizer_create() # 创建EigenFace特征脸识别器 # recognizer = cv2.face.FisherFaceRecognizer_create() # 创建FisherFace特征脸识别器 recognizer = cv2.face.LBPHFaceRecognizer_create() # 创建FisherFace特征脸识别器 # 不一定需要训练的照片的尺寸大小一致,都可以训练 recognizer.train(photos, np.array(lables)) # 识别器开始训练 i = cv2.imread("images\\hdy\\pig4.png", 0) # 待识别的人脸图像 label, confidence = recognizer.predict(i) # 识别器开始分析人脸图像 print("confidence = " + str(confidence)) # 打印评分 print(names[str(label)]) # 数组字典中里标签对应的名字 cv2.waitKey() cv2.destroyAllWindows()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。