匠心精神 - 良心品质腾讯认可的专业机构-IT人的高薪实战学院

咨询电话:4000806560

教你如何利用Python实现人脸识别技术,让你秒变技术大佬

教你如何利用Python实现人脸识别技术,让你秒变技术大佬

人脸识别技术现在已经成为了热门话题,其应用场景也非常广泛。例如在人脸解锁、人脸支付、监控系统等领域都有非常广泛的应用。利用Python可以很容易地实现人脸识别技术,本文将介绍如何使用Python实现人脸识别系统。

一、 准备工作

在开始之前,我们需要先安装OpenCV库。OpenCV是一款计算机视觉库,它提供了许多图像处理和计算机视觉相关的函数。安装OpenCV可以通过pip命令安装:

```
pip install opencv-python
```

二、采集训练数据

首先需要采集一些人脸图片用于训练模型。通过OpenCV,可以很容易地采集人脸图像。以下是代码示例:

```python
import cv2

# 创建一个视频捕捉对象
cap = cv2.VideoCapture(0)
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

count = 0
while True:
    ret, frame = cap.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # 检测人脸
    faces = face_cascade.detectMultiScale(gray, 1.3, 5)

    for (x, y, w, h) in faces:
        # 绘制人脸矩形
        cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)
        
        # 保存人脸图片
        cv2.imwrite("dataset/user." + str(count) + ".jpg", gray[y:y+h,x:x+w])
        count += 1
        
    cv2.imshow('frame', frame)
    
    # 按下'q'键退出
    if cv2.waitKey(100) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()
```

该代码打开电脑自带的摄像头,并检测摄像头捕获到的人脸矩形,并且将人脸保存在本地。

三、训练模型

在采集完数据后,需要使用已有的图片训练出一个人脸识别模型。以下是代码示例:

```python
import cv2
import os
import numpy as np

# 读取训练数据
def read_images(path):
    images = []
    labels = []
    filenames = os.listdir(path)
    for filename in filenames:
        if filename.startswith('.'):
            continue
        img_path = os.path.join(path, filename)
        img = cv2.imread(img_path, cv2.IMREAD_GRAYSCALE)
        images.append(np.asarray(img, dtype=np.uint8))
        label = int(filename.split('.')[0].replace("user", ""))
        labels.append(label)

    return images, labels

# 训练模型
def train():
    recognizer = cv2.face.LBPHFaceRecognizer_create()
    face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

    # 读取训练数据
    images, labels = read_images('dataset')

    # 训练
    recognizer.train(images, np.array(labels))

    # 保存模型
    recognizer.save('model.yml')

train()
```

该代码读取采集到的数据,使用OpenCV的LBPH人脸识别算法训练数据。最后将训练好的模型保存在本地。

四、人脸识别

在模型训练完毕后,我们可以使用OpenCV检测人脸并将其进行识别。以下是代码示例:

```python
import cv2

recognizer = cv2.face.LBPHFaceRecognizer_create()
recognizer.read("model.yml")
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

cap = cv2.VideoCapture(0)
font = cv2.FONT_HERSHEY_SIMPLEX

while True:
    ret, frame = cap.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # 检测人脸
    faces = face_cascade.detectMultiScale(gray, 1.3, 5)

    for (x, y, w, h) in faces:
        # 绘制人脸矩形
        cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)

        # 识别人脸
        id_, confidence = recognizer.predict(gray[y:y+h,x:x+w])
        
        if confidence > 100:
            # 不匹配的人脸
            id_ = "unknown"
        else:
            # 匹配的人脸
            id_ = "user %s" % id_

        cv2.putText(frame, str(id_), (x+5,y-5), font, 1, (255,255,255), 2)            

    cv2.imshow('frame', frame)

    # 按下'q'键退出
    if cv2.waitKey(100) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()
```

该代码打开摄像头,并且不断检测摄像头捕获到的人脸。如果检测到人脸,则使用模型识别人脸,并在图像上显示出识别出的人脸信息。

总之,Python实现人脸识别技术非常简单易学,通过本文的介绍相信您已经掌握了基本的实现技巧,赶快将其应用于您的项目中吧!