首页 > 解决方案 > IndexError:使用 OpenCV 和 FaceRecognition 在 Python 中列出超出范围的索引

问题描述

import cv2
import numpy as np
import face_recognition
import os

path = 'Images'
images = []
classNames = []
myList = os.listdir(path)
print(myList)
for cl in myList:
    curImg = cv2.imread(f'{path}/{cl}')
    images.append(curImg)
    classNames.append(os.path.splitext(cl)[0])
print(classNames)

def findEncodings(images):
    encodeList = []
    for img in images:
        img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
        encode = face_recognition.face_encodings(img)[0]
        encodeList.append(encode)
    return encodeList

encodeListKnown = findEncodings(images)
print(len(encodeListKnown))

我现在真的看不到我的错误...控制台打印我->

C:\Users\davut\PycharmProjects\QRCodeOpenCV\venv\Scripts\python.exe C:/Users/davut/PycharmProjects/QRCodeOpenCV/AttendanceProject.py ['Armagan.jpeg', 'Bill-Gates.jpg', 'Elon- Musk.jpg'、'Elon-Test.jpg'、'Gizem (1).jpeg'、'Muenster.jpg'、'Oezi.jpeg'、'Sude.jpeg'] ['Armagan'、'Bill-Gates' , 'Elon-Musk', 'Elon-Test', 'Gizem (1)', 'Muenster', 'Oezi', 'Sude'] Traceback(最近一次调用最后):文件“C:/Users/davut/PycharmProjects /QRCodeOpenCV/AttendanceProject.py”,第 25 行,在 encodeListKnown = findEncodings(images) 文件“C:/Users/davut/PycharmProjects/QRCodeOpenCV/AttendanceProject.py”,第 21 行,在 findEncodings encode = face_recognition.face_encodings(img)[ 0] IndexError:列表索引超出范围

标签: pythonopencv

解决方案


好的解决方案是,在使用 face_recognition 时不要使用没有人脸的测试照片......


推荐阅读