人脸检测是OpenCV的一个很好的功能,是人脸识别的基础。人脸识别实际上是一个可以识别给定图像或视频中人脸的程序。
人脸识别模块特征
1、它使用一系列分类图像来“训练”程序,并基于这些图像进行识别。这就是OpenCV 以及人脸识别模块进行人脸识别的过程。
2、每个识别都有一个转置信(confidence)因此,在实际应用中可以通过设置阈值进行筛选。
人脸识别有两种方法
1、从人脸数据库获取图像或免费获取可用的人脸图像。
2、互联网上有很多人脸数据库:为了识别这些样本,必须在包含人脸的样本图像上进行人脸识别。这是一个 一个学习过程,但并不像你提供的图像那么令人满意。
OpenCV在python中的人脸检测功能操作实例
importos importcv2 fromPILimportImage importnumpyasnp defgetImageAndLabels(path): facesSamples=[] ids=[] imagePaths=[os.path.join(path,f)forfinos.listdir(path)] #检测人脸 #加载特征数据 face_detector=cv2.CascadeClassifier( 'D:/Python/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml') #参数:scaleFactor(比例因子):图片缩放多少,minNeighbors:至少检测多少次,minSizemaxSize:目前检测区域的最小面积 #scaleFactor=1.01,minNeighbors=3,maxSize=(33,33),minSize=(28,28) #遍历列表中的图片 forimagePathinimagePaths: #打开当前图片 PIL_img=Image.open(imagePath).convert('L') #将图片转换为数组 img_numpy=np.array(PIL_img,'uint8') faces=face_detector.detectMultiScale(img_numpy) #获取每张图片的id id=int(os.path.split(imagePath)[1].split('.')[0]) #获取人脸区域 forx,y,w,hinfaces: #进行切片处理,获取图像数组和id facesSamples.append(img_numpy[y:y+h,x:x+w]) ids.append(id) returnfacesSamples,ids if__name__='__main__': #图片路径 path='./data/jm/' #获取图像数组和id标签数组 faces,ids=getImageAndLabels(path) #获取循环对象 recognizer=cv2.face.LBPHFaceRecognizer_create() recognizer.train(faces,np.array(ids)) #保存文件 recognizer.write('trainer/trainer.yml')