Помогите с ошибкой list index out of range что нужно делать?

У меня есть код:

import cv2
import face_recognition
import sys
import os
from colorama import Fore, Back, Style
from colorama import init
init()

os.system('cls')


def train_model_by_img(name):

    if not os.path.exists('dataset'):
        print(f'{Fore.RED}[ОШИБКА]{Fore.RESET} Нету директории "dataset"')
        sys.exit()


    known_encodings = []
    images = os.listdir("dataset")


    for (i, image) in enumerate(images):
        print(f'{Fore.GREEN}[+]{Fore.RESET} Проверенно успешно {i + 1}/{len(images)} фотографий')

        face_img = face_recognition.load_image_file(f'dataset/{image}')
        face_enc = face_recognition.face_encodings(face_img)[0]

        print(face_enc)

def main():
    train_model_by_img("Davlat")


if __name__ == '__main__':
    main()

и возникает ошибка:

Traceback (most recent call last):
  File "C:\Users\Leyn\Desktop\OpenCV\main.py", line 36, in <module>
    main()
  File "C:\Users\Leyn\Desktop\OpenCV\main.py", line 32, in main
    train_model_by_img("Davlat")
  File "C:\Users\Leyn\Desktop\OpenCV\main.py", line 27, in train_model_by_img
    face_enc = face_recognition.face_encodings(face_img)[0]
IndexError: list index out of range

Ответы (1 шт):

Автор решения: Константин Николаевич Бояр II

Скорее всего дело в том что enumerate() добавляет счетчик к итерируемому объекту и возвращает его, а вам нужно узнать число итерируемых объектов, для этого попробуйте использовать len()

for (i, image) in len(images):
        print(f'{Fore.GREEN}[+]{Fore.RESET} Проверенно успешно {i + 1}/{len(images)} фотографий')

        face_img = face_recognition.load_image_file(f'dataset/{image}')
        face_enc = face_recognition.face_encodings(face_img)[0]

        print(face_enc)
→ Ссылка