Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IndexError: list index out of range #12

Open
aniiketdongare07 opened this issue Apr 7, 2020 · 0 comments
Open

IndexError: list index out of range #12

aniiketdongare07 opened this issue Apr 7, 2020 · 0 comments

Comments

@aniiketdongare07
Copy link

aniiketdongare07 commented Apr 7, 2020

Been trying to solve this error but have no luck, tried all whatever was said in https://www.hackster.io/mjrobot/real-time-face-recognition-an-end-to-end-project-a10826 comment section, but same error. My code is :

`''''
Real Time Face Recogition
==> Each face stored on dataset/ dir, should have a unique numeric integer ID as 1, 2, 3, etc
==> LBPH computed model (trained faces) should be on trainer/ dir
Based on original code by Anirban Kar: https://github.com/thecodacus/Face-Recognition

Developed by Marcelo Rovai - MJRoBot.org @ 21Feb18

'''

import cv2
import numpy as np
import os

recognizer = cv2.face.LBPHFaceRecognizer_create()
recognizer.read('trainer/trainer.yml')
cascadePath = "haarcascade_frontalface_default.xml"
faceCascade = cv2.CascadeClassifier(cascadePath);

font = cv2.FONT_HERSHEY_SIMPLEX

#iniciate id counter
id = 0

names related to ids: example ==> Marcelo: id=1, etc

names = ["PhotoAni", "Aniket", "Mum", "Dad"]

Initialize and start realtime video capture

cam = cv2.VideoCapture(0)
cam.set(3, 640) # set video widht
cam.set(4, 480) # set video height

Define min window size to be recognized as a face

minW = 0.1cam.get(3)
minH = 0.1
cam.get(4)

while True:

ret, img =cam.read()
#img = cv2.flip(img, -1) # Flip vertically

gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

faces = faceCascade.detectMultiScale( 
    gray,
    scaleFactor = 1.2,
    minNeighbors = 5,
    minSize = (int(minW), int(minH)),
   )

for(x,y,w,h) in faces:

    cv2.rectangle(img, (x,y), (x+w,y+h), (0,255,0), 2)

    id, confidence = recognizer.predict(gray[y:y+h,x:x+w])

    # Check if confidence is less them 100 ==> "0" is perfect match 
    if (confidence < 100):
        id = names[id]
        confidence = "  {0}%".format(round(100 - confidence))
    else:
        id = "unknown"
        confidence = "  {0}%".format(round(100 - confidence))
    
    cv2.putText(img, str(id), (x+5,y-5), font, 1, (255,255,255), 2)
    cv2.putText(img, str(confidence), (x+5,y+h-5), font, 1, (255,255,0), 1)  

cv2.imshow('camera',img) 

k = cv2.waitKey(10) & 0xff # Press 'ESC' for exiting video
if k == 27:
    break

Do a bit of cleanup

print("\n [INFO] Exiting Program and cleanup stuff")
cam.release()
cv2.destroyAllWindows()
`

The error is:

C:\Users\anike\Downloads\Setups\Dev\OpenCV-Face-Recognition-master\FacialRecognition>python 03_face_recognition.py
Traceback (most recent call last):
File "03_face_recognition.py", line 59, in
id = names[id]
IndexError: list index out of range
[ WARN:0] global C:\projects\opencv-python\opencv\modules\videoio\src\cap_msmf.cpp (674) SourceReaderCB::~SourceReaderCB terminating async callback

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants
@aniiketdongare07 and others