Python中的OpenCV人脸识别

Python中的OpenCV人脸识别,python,opencv,Python,Opencv,如链接中所示,人脸识别在C++中可用,有许多不同的算法。但是,当我尝试用Python创建一个类似于recognizer=cv2.createLBPHFaceRecognizer()的识别器时,它似乎不存在。Python中是否存在人脸识别器模块,如果存在,如何使用它?谢谢。如果有人仍然有这个问题,诀窍是使用opencv2而不是opencv3。这是因为在新版本中,面部模块已移动到opencv contrib。如果您愿意,可以用它编译opencv3,但我无法让它工作。您可以看到我使用python进行人

如链接中所示,人脸识别在C++中可用,有许多不同的算法。但是,当我尝试用Python创建一个类似于
recognizer=cv2.createLBPHFaceRecognizer()
的识别器时,它似乎不存在。Python中是否存在人脸识别器模块,如果存在,如何使用它?谢谢。

如果有人仍然有这个问题,诀窍是使用opencv2而不是opencv3。这是因为在新版本中,面部模块已移动到opencv contrib。如果您愿意,可以用它编译opencv3,但我无法让它工作。

您可以看到我使用python进行人脸识别的完整代码。您还必须做一件事,在python文件所在的目录中,您还必须放置培训图像。同时安装人脸识别模块

import numpy as np
import face_recognition as fr
import cv2

video_capture = cv2.VideoCapture(0)

image = fr.load_image_file("me.jpg")
image_encoding = fr.face_encodings(image)[0]

known_face_encodings = [image_encoding]
known_face_names = ["Me"]

while True:
    ret, frame = video_capture.read()
    rgb_frame = frame[:, :, ::-1]

    face_locations = fr.face_locations(rgb_frame)
    face_encodings = fr.face_encodings(rgb_frame, face_locations)

    for (top, right, bottom, left), face_encoding in zip(face_locations, face_encodings):
        matches = fr.compare_faces(known_face_encodings, face_encoding)
        name = "Random Person"

        face_distances = fr.face_distance(known_face_encodings, face_encoding)
        best_match_index = np.argmin(face_distances)

        if matches[best_match_index]:
            name = known_face_names[best_match_index]
    
        cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2)
        cv2.rectangle(frame, (left, bottom - 35), (right, bottom), (0, 0, 255), cv2.FILLED)
        font = cv2.FONT_HERSHEY_SIMPLEX
        cv2.putText(frame, name, (left+6, bottom-6), font, 1.0, (255, 255, 255), 1)

    cv2.imshow("Face Recognition", frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

video_capture.release()
cv2.destroyAllWindows()

为什么要投反对票-(请看一看具有python集成的Indio API: