IndexError: список индексов вне диапазона, face_recognition - PullRequest
0 голосов
/ 26 января 2020

Я использую open cv и распознавание лиц вместе, однако эта строка кода:

biden_encoding = face_recognition.face_encodings(known_image)[0]

выдает мне следующую ошибку:

IndexError: list index out of range

Я прочитал об этом ошибка и большинство приходит к выводу, что это означает, что face_recognition не обнаруживает никаких лиц в кадре. Однако , open cv обнаруживает лица в этом том же кадре , поэтому я не уверен, действительно ли face_recognition не обнаруживает лица или я получаю IndexError по какой-то другой причине?

весь код, необходимый для получения справки о проблеме:

check, frame = video.read()
faceCascade = cv2.CascadeClassifier(
    'C:\\Users\\Astroid\\Desktop\\face detection software\\data\\haarcascade_frontalface_alt.xml')

frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

faces = faceCascade.detectMultiScale(
    frame,
    scaleFactor=1.2,
    minNeighbors=5,
)

for x, y, w, h in faces:
    img = cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 0, 0), 1)

    if len(os.listdir("C:\\Users\\Astroid\\Desktop\\face detection software\\saved faces\\")) == 0:

        cv2.imwrite(
            "C:\\Users\\Astroid\\Desktop\\face detection software\\saved faces\\" + "1 faces.jpg", cropped)
    else:
        cv2.imwrite(
            "C:\\Users\\Astroid\Desktop\\face detection software\\unknown faces\\" + " unknown_faces.jpg", cropped)

        known_image = face_recognition.load_image_file(
            "C:\\Users\\Astroid\\Desktop\\face detection software\\saved faces\\" + "1 faces.jpg")

        unknown_image = face_recognition.load_image_file(
           "C:\\Users\\Astroid\Desktop\\face detection software\\unknown faces\\" + " unknown_faces.jpg"

        biden_encoding = face_recognition.face_encodings(known_image)[0]
        print(biden_encoding)#

        unknown_encoding = face_recognition.face_encodings(unknown_image)[0]
        print(unknown_encoding)#

        results = face_recognition.compare_faces([biden_encoding], [unknown_encoding])

        if results >= (60):
            shutil.move(
                "C:\\Users\\Astroid\Desktop\\face detection software\\unknown faces\\" + " unknown_faces.jpg",
                "C:\\Users\\Astroid\\Desktop\\face detection software\\saved faces\\" + (face_num) + (" faces.jpg"))
        else:
            pass
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...