python设计一款简单的人脸识别系统代码
时间: 2024-09-18 16:16:42 浏览: 73
在Python中,我们可以利用OpenCV(cv2库)和dlib库来实现一个基本的人脸识别系统。这个示例将展示如何使用Haar级联分类器来检测人脸,并通过预训练模型进行简单的识别。注意这只是一个入门级的例子,实际应用中可能需要深度学习技术如face_recognition库。
```python
# 导入必要的库
import cv2
import dlib
# 加载预训练的人脸检测器和面部关键点预测器
face_detector = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat')
def detect_faces(image_path):
# 读取图像
image = cv2.imread(image_path)
# 转换为灰度并缩放
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
scaled_image = cv2.resize(gray_image, (0, 0), fx=0.5, fy=0.5)
# 检测人脸
faces = face_detector.detectMultiScale(scaled_image, scaleFactor=1.1, minNeighbors=5)
for (x, y, w, h) in faces:
# 提取脸部区域
roi_gray = gray_image[y:y+h, x:x+w]
roi_color = image[y:y+h, x:x+w]
# 使用预测器获取面部特征点
shape = predictor(roi_gray, dets=[(-1, -1)] * len(faces))[0]
# 在图片上绘制人脸框和关键点
cv2.rectangle(image, (x, y), (x+w, y+h), (255, 0, 0), 2)
draw_landmarks(image, shape)
# 显示结果
cv2.imshow('Face Detection', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
def draw_landmarks(image, shape):
for i in range(68):
x = shape.part(i).x
y = shape.part(i).y
cv2.circle(image, (x, y), 2, (0, 255, 0), -1)
# 使用函数
image_path = "path_to_your_image.jpg"
detect_faces(image_path)
```
阅读全文