We made this program it's a face recognition project for school and we are new to python, We've done a lot of research and we cam up with this. It works but it runs very slow, if someone can help us improve the speed of the program we would be very thankful!
This is the code:
import cv2
import os
import face_recognition
import glob
known_faces = []
known_names = []
known_faces_paths = []
registered_faces_path = 'C:\\Users\\DELL\\Documents\\AttProj\\registered\\'
for name in os.listdir(registered_faces_path):
images_mask = '%s%s\\*.jpg' % (registered_faces_path, name)
images_paths = glob.glob(images_mask)
known_faces_paths += images_paths
known_names += [name for x in images_paths]
def get_encodings(img_path):
image = face_recognition.load_image_file(img_path)
encoding = face_recognition.face_encodings(image)
if len(encoding) > 0:
return encoding[0]
else:
return None
known_faces = [get_encodings(img_path) for img_path in known_faces_paths if get_encodings(img_path) is not None]
vc = cv2.VideoCapture(0)
while True:
ret, frame = vc.read()
if not ret:
break
frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
faces = face_recognition.face_locations(frame_rgb)
for face in faces:
top, right, bottom, left = face
cv2.rectangle(frame, (left, top), (right, bottom), (0,0,255), 2)
encoding = face_recognition.face_encodings(frame_rgb, [face])[0]
results = face_recognition.compare_faces(known_faces, encoding)
if any(results):
name = known_names[results.index(True)]
else:
name = 'unknown'
cv2.putText(frame, name, (left, bottom + 20), cv2.FONT_HERSHEY_PLAIN, 2, (0,0,255), 2)
cv2.imshow('win', frame)
k = cv2.waitKey(1)
if ord('q') == k:
break
cv2.destroyAllWindows()
vc.release()
We've tried a lot and nothing worked out.
source https://stackoverflow.com/questions/75784155/face-recognition-python
Comments
Post a Comment