欢迎访问宙启技术站
智能推送

用Python编写基于face_recognition库的人脸追踪系统

发布时间:2023-12-26 14:45:12

人脸追踪系统是一种利用计算机视觉技术对视频中的人脸进行实时追踪和识别的应用程序。Python提供了丰富的图像处理和计算机视觉库,例如face_recognition库,可以方便地实现人脸追踪系统。

face_recognition库提供了人脸识别、人脸定位和人脸特征提取等功能。它基于深度学习模型,可以高效地处理大规模人脸数据。下面是一个使用face_recognition库实现人脸追踪系统的示例代码:

import cv2
import face_recognition

# 加载已知人脸图像并提取特征
known_image = face_recognition.load_image_file("known_face.jpg")
known_face_encoding = face_recognition.face_encodings(known_image)[0]

# 初始化人脸列表和已知人脸名称
known_face_encodings = [known_face_encoding]
known_face_names = ["Known Face"]

# 打开摄像头
video_capture = cv2.VideoCapture(0)

while True:
    # 从摄像头读取一帧图像
    ret, frame = video_capture.read()

    # 将图像从BGR颜色空间转换为RGB颜色空间
    rgb_frame = frame[:, :, ::-1]

    # 在图像中查找人脸并提取特征
    face_locations = face_recognition.face_locations(rgb_frame)
    face_encodings = face_recognition.face_encodings(rgb_frame, face_locations)

    # 对每个人脸进行匹配
    for face_encoding in face_encodings:
        # 将当前人脸与已知人脸进行比较
        matches = face_recognition.compare_faces(known_face_encodings, face_encoding)
        name = "Unknown"

        # 如果找到了已知人脸,则显示已知人脸的名称
        if True in matches:
            first_match_index = matches.index(True)
            name = known_face_names[first_match_index]

        # 在图像中绘制人脸矩形和名称
        top, right, bottom, left = face_locations[0]
        cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2)
        cv2.putText(frame, name, (left, top - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 0, 255), 2)

    # 显示处理后的图像
    cv2.imshow('Video', frame)

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

# 释放摄像头资源
video_capture.release()
cv2.destroyAllWindows()

上述示例代码中,首先加载已知人脸图像并提取特征,然后打开摄像头进行实时图像读取。将读取到的图像从BGR颜色空间转换为RGB颜色空间后,利用face_recognition库的人脸定位和人脸编码功能,在图像中找到人脸并提取其特征。

随后,对每个提取到的人脸特征进行匹配,将当前人脸与已知人脸进行比较。如果找到了已知人脸,则显示已知人脸的名称;否则,将人脸名称标记为"Unknown"。最后,利用OpenCV库在图像中绘制人脸矩形和名称,并通过按下q键退出追踪系统。

这样,我们就可以使用Python编写基于face_recognition库的人脸追踪系统。该系统可以在实时视频流中进行人脸追踪和识别,并显示匹配到的人脸名称。