import face_recognition import cv2 import numpy as np import joblib import time # This is a super simple (but slow) example of running face recognition on live video from your webcam. # There's a second example that's a little more complicatedq but runs faster. # PLEASE NOTE: This example requires OpenCV (the `cv2` library) to be installed only to read from your webcam. # OpenCV is *not* required to use the face_recognition library. It's only required if you want to run this # specific demo. If you have trouble installing it, try any of the other demos that don't require it instead. # Get a reference to webcam #0 (the default one) video_capture = cv2.VideoCapture(0) clf = joblib.load('saved_model_2.pkl') classes = clf.classes_ threshold = 0.9 dummy_data = [ { "name": "Bayu", "address": "299 St Louis Road Oak Forest, IL 60452", "nik": "1000076456784631" }, { "name": "Dio", "address": "22 Whitemarsh St. Mansfield, MA 02048", "nik": "1000024792887549" }, { "name": "Hadi", "address": "643 Honey Creek Dr. Milledgeville, GA 31061", "nik": "1000038502830420" }, { "name": "Kevin", "address": "881 Cooper Ave. Hummelstown, PA 17036", "nik": "1000045356476664" }, { "name": "Matrix", "address": "580 Glenwood Dr. Garner, NC 27529", "nik": "1000023452134598" }, { "name": "Surya", "address": "909 South St Paul Street Hopewell, VA 23860", "nik": "1000075656784734" }, ] while True: # Grab a single frame of video ret, frame = video_capture.read() # Convert the image from BGR color (which OpenCV uses) to RGB color (which face_recognition uses) rgb_frame = frame[:, :, ::-1] # Find all the faces and face enqcodings in the frame of video face_locations = face_recognition.face_locations(rgb_frame) print(face_locations) no = len(face_locations) print("Number of faces detected: ", no) face_encodings = face_recognition.face_encodings(rgb_frame, face_locations) # Loop through each face in this frame of video for (top, right, bottom, left), face_encoding in zip(face_locations, face_encodings): start_time = time.perf_counter_ns() proba_list = clf.predict_proba([face_encoding]) end_time = time.perf_counter_ns() process_time = end_time - start_time i = np.argmax(proba_list) proba = list(*proba_list)[i] name = dummy_data[i]["name"] print(name, "{:.2f}".format(proba), proba_list, process_time) # Draw a box around the face cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2) # Draw a label with a name below the face cv2.rectangle(frame, (left, bottom - 35), (right, bottom), (0, 0, 255), cv2.FILLED) if proba > threshold: font = cv2.FONT_HERSHEY_DUPLEX cv2.putText(frame, "{} {:.2f}".format(name, proba), (left + 6, bottom - 6), font, 1.0, (255, 255, 255), 1) # Display the resulting image cv2.imshow('Video', frame) # Hit 'q' on the keyboard to quit! if cv2.waitKey(1) & 0xFF == ord('q'): break # Release handle to the webcam video_capture.release() cv2.destroyAllWindows()