anisayari / easy_facial_recognition

Easy faciale recognition app
https://www.youtube.com/watch?v=54WmrwVWu1w
MIT License
69 stars 43 forks source link

Argument -input bug #2

Open Ramzichebli123 opened 3 years ago

Ramzichebli123 commented 3 years ago

bonjour monsieur anis c'est moi que j'ai contacterai tout de suite j'ai un problème dans les arguments input (--i , --input) et je sais pas comment le réglé ?? voila le code :

Code Anis - Defend Intelligence

import cv2 import dlib import PIL.Image import numpy as np from imutils import face_utils import argparse from pathlib import Path import os import ntpath

parser = argparse.ArgumentParser(description='Easy Facial Recognition App') parser.add_argument('-i', '--input', type=str, required=True, help='directory of input known faces')

print('[INFO] Starting System...') print('[INFO] Importing pretrained model..') pose_predictor_68_point = dlib.shape_predictor("pretrained_model/shape_predictor_68_face_landmarks.dat") pose_predictor_5_point = dlib.shape_predictor("pretrained_model/shape_predictor_5_face_landmarks.dat") face_encoder = dlib.face_recognition_model_v1("pretrained_model/dlib_face_recognition_resnet_model_v1.dat") face_detector = dlib.get_frontal_face_detector() print('[INFO] Importing pretrained model..')

def transform(image, face_locations): coord_faces = [] for face in face_locations: rect = face.top(), face.right(), face.bottom(), face.left() coord_face = max(rect[0], 0), min(rect[1], image.shape[1]), min(rect[2], image.shape[0]), max(rect[3], 0) coord_faces.append(coord_face) return coord_faces

def encode_face(image): face_locations = face_detector(image, 1) face_encodings_list = [] landmarks_list = [] for face_location in face_locations:

DETECT FACES

    shape = pose_predictor_68_point(image, face_location)
    face_encodings_list.append(np.array(face_encoder.compute_face_descriptor(image, shape, num_jitters=1)))
    # GET LANDMARKS
    shape = face_utils.shape_to_np(shape)
    landmarks_list.append(shape)
face_locations = transform(image, face_locations)
return face_encodings_list, face_locations, landmarks_list

def easy_face_reco(frame, known_face_encodings, known_face_names): rgb_small_frame = frame[:, :, ::-1]

ENCODING FACE

face_encodings_list, face_locations_list, landmarks_list = encode_face(rgb_small_frame)
face_names = []
for face_encoding in face_encodings_list:
    if len(face_encoding) == 0:
        return np.empty((0))
    # CHECK DISTANCE BETWEEN KNOWN FACES AND FACES DETECTED
    vectors = np.linalg.norm(known_face_encodings - face_encoding, axis=1)
    tolerance = 0.6
    result = []
    for vector in vectors:
        if vector <= tolerance:
            result.append(True)
        else:
            result.append(False)
    if True in result:
        first_match_index = result.index(True)
        name = known_face_names[first_match_index]
    else:
        name = "Unknown"
    face_names.append(name)

for (top, right, bottom, left), name in zip(face_locations_list, face_names):
    cv2.rectangle(frame, (left, top), (right, bottom), (0, 255, 0), 2)
    cv2.rectangle(frame, (left, bottom - 30), (right, bottom), (0, 255, 0), cv2.FILLED)
    cv2.putText(frame, name, (left + 2, bottom - 2), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 0), 1)

for shape in landmarks_list:
    for (x, y) in shape:
        cv2.circle(frame, (x, y), 1, (255, 0, 255), -1)

if name == 'main': args = parser.parse_args()

print('[INFO] Importing faces...')
face_to_encode_path = ['/home/imex/spyder/easy_facial_recognition-master/known_faces/ramzi.jpg','/home/imex/spyder/easy_facial_recognition-master/known_faces/Zuckerberg.png']
files = [file_ for file_ in face_to_encode_path.rglob('*.jpg')]

for file_ in face_to_encode_path.rglob('*.png'):
    files.append(file_)
if len(files)==0:
    raise ValueError('No faces detect in the directory: {}'.format(face_to_encode_path))
known_face_names = [os.path.splitext(ntpath.basename(file_))[0] for file_ in files]

known_face_encodings = []
for file_ in files:
    image = PIL.Image.open(file_)
    image = np.array(image)
    face_encoded = encode_face(image)[0][0]
    known_face_encodings.append(face_encoded)

print('[INFO] Faces well imported')
print('[INFO] Starting Webcam...')
video_capture = cv2.VideoCapture(0)
print('[INFO] Webcam well started')
print('[INFO] Detecting...')
while True:
    ret, frame = video_capture.read()
    easy_face_reco(frame, known_face_encodings, known_face_names)
    cv2.imshow('Easy Facial Recognition App', frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
print('[INFO] Stopping System')
video_capture.release()
cv2.destroyAllWindows()
anisayari commented 3 years ago

Hello, concernant l'argument input il est détaillé ici :

parser.add_argument('-i', '--input', type=str, required=True, help='directory of input known faces')

Il s'agit de l'argument qui fait référence au dossier des visages connus.

Ensuite Peut tu stp mettre en forme ta demande ? Je ne comprend pas grand chose ... :-)

Merci,

Je t'invite à lire ici comment ouvrir une issue correctement sur un repo github https://medium.com/nyc-planning-digital/writing-a-proper-github-issue-97427d62a20f#:~:text=When%20you%20click%20%E2%80%9CNew%20issue,you%20write%20a%20proper%20issue.

Et je t'invite aussi à utilisé correctement la syntaxe markdown : https://guides.github.com/features/mastering-markdown/

Ramzichebli123 commented 3 years ago

bonjour, de quoi je dois remplacer le "-i" et "--input" ?? et dans help='directory of input known faces' j'ai mis le path de dossier qui contient les images ??

anisayari commented 3 years ago

Désolé je ne comprend pas la question ?

Ramzichebli123 commented 3 years ago

bonjour voila l'erreur que j'ai

runfile('/home/imex/spyder/easy_facial_recognition-master/easy_facial_recognition.py', wdir='/home/imex/spyder/easy_facial_recognition-master') [INFO] Starting System... [INFO] Importing pretrained model.. [INFO] Importing pretrained model.. usage: easy_facial_recognition.py [-h] -i INPUT easy_facial_recognition.py: error: the following arguments are required: -i/--input An exception has occurred, use %tb to see the full traceback.

anisayari commented 3 years ago

L'erreur est clair : easy_facial_recognition.py: error: the following arguments are required: -i/--input

Dans le lancement du fichier il n'y a effectivement aucun argument :

easy_facial_recognition.py: error: the following arguments are required: -i/--input

https://www.tutorialspoint.com/python/python_command_line_arguments.htm

Tpouns commented 3 years ago

Bonjour je viens de lire : https://www.tutorialspoint.com/python/python_command_line_arguments.htm je comprend pas comment ressoudre l'erreur je pourrais avoir quelque précision ? Merci de votre réponse