给我一个Python写的人脸识别的程序范例
时间: 2023-06-03 16:04:42 浏览: 56
好的,以下是一个基于Python的人脸识别程序范例:
```
import cv2
# 加载Haar级联分类器模型,可用于检测人脸
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# 加载人脸识别模型
recognizer = cv2.face.LBPHFaceRecognizer_create()
# 加载已经训练好的人脸数据集
recognizer.read('trainer.yml')
# 加载摄像头,进行实时检测
cap = cv2.VideoCapture(0)
while True:
# 读取摄像头捕捉到的帧
ret, img = cap.read()
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 使用Haar级联分类器检测人脸
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.2, minNeighbors=5, minSize=(30, 30))
# 对于每一个检测到的人脸
for (x,y,w,h) in faces:
# 绘制矩形框,以框定人脸区域
cv2.rectangle(img, (x,y), (x+w,y+h), (0,255,0), 2)
# 从人脸区域提取出原图的人脸部分
roi_gray = gray[y:y+h, x:x+w]
# 使用已经训练好的人脸数据集,进行人脸识别
id_, conf = recognizer.predict(roi_gray)
# 如果置信度小于80,则表示未知人脸
if conf < 80:
name = 'Unknown'
else:
name = str(id_)
# 在矩形框上方,显示该人脸的姓名或ID
cv2.putText(img, name, (x,y-10), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,255,0), 2)
# 显示结果
cv2.imshow('img', img)
# 如果按下q键,则退出循环
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 释放摄像头和窗口资源
cap.release()
cv2.destroyAllWindows()
```
需要注意的是,该程序依赖于OpenCV库和已经训练好的人脸数据集,需要自行安装和下载。同时,由于不同的人脸数据集可能格式不同,所以需要根据实际情况进行修改。