Помогите с ошибкой 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)