人脸识别 Python [关闭]

问题描述 投票:0回答:0

我们把这个程序作为学校的人脸识别项目,我们是 python 的新手,我们做了很多研究,我们想出了这个。它可以工作,但运行速度很慢,如果有人能帮助我们提高程序速度,我们将非常感激!

这是代码:

import cv2
import os
import face_recognition
import glob

known_faces = []
known_names = []
known_faces_paths = []

registered_faces_path = 'C:\\Users\\DELL\\Documents\\AttProj\\registered\\'
for name in os.listdir(registered_faces_path):
    images_mask = '%s%s\\*.jpg' % (registered_faces_path, name)
    images_paths = glob.glob(images_mask)
    known_faces_paths += images_paths
    known_names += [name for x in images_paths]

def get_encodings(img_path):
    image = face_recognition.load_image_file(img_path)
    encoding = face_recognition.face_encodings(image)
    if len(encoding) > 0:
        return encoding[0]
    else:
        return None

known_faces = [get_encodings(img_path) for img_path in known_faces_paths if get_encodings(img_path) is not None]

vc = cv2.VideoCapture(0)

while True:
    ret, frame = vc.read()
    if not ret:
        break
    frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
    faces = face_recognition.face_locations(frame_rgb)

    for face in faces:
        top, right, bottom, left = face
        cv2.rectangle(frame, (left, top), (right, bottom), (0,0,255), 2)
        encoding = face_recognition.face_encodings(frame_rgb, [face])[0]

        results = face_recognition.compare_faces(known_faces, encoding)
        if any(results):
            name = known_names[results.index(True)]
        else:
            name = 'unknown'

        cv2.putText(frame, name, (left, bottom + 20), cv2.FONT_HERSHEY_PLAIN, 2, (0,0,255), 2)

    cv2.imshow('win', frame)
    k = cv2.waitKey(1)
    if ord('q') == k:
        break

cv2.destroyAllWindows()
vc.release()

我们已经尝试了很多,但没有成功。

python opencv face-recognition
© www.soinside.com 2019 - 2024. All rights reserved.