| import threading | |
| import cv2 | |
| from deepface import DeepFace | |
| cap = cv2.VideoCapture(0, cv2.CAP_DSHOW) | |
| cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640) | |
| cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480) | |
| counter = 8 | |
| face_match = False | |
| reference_img = cv2.imread("reference.jpeg") | |
| def check_face(frame): | |
| global face_match | |
| try: | |
| if DeepFace.verify(frame, reference_img.copy())['verified']: | |
| face_match = True | |
| else: | |
| face_match = False | |
| except ValueError: | |
| face_match = False | |
| while True: | |
| ret, frame = cap.read() | |
| if ret: | |
| if counter%30 ==0: | |
| try: | |
| threading.Thread(target=check_face, args = (frame.copy(),)).start() | |
| except ValueError: | |
| pass | |
| counter += 1 | |
| if face_match: | |
| cv2.putText(frame, "Face Match!", (20, 450), cv2.FONT_HERSHEY_SIMPLEX, 2, (0, 255, 0), 3) | |
| else: | |
| cv2.putText(frame, "Face Not Match!", (20, 450), cv2.FONT_HERSHEY_SIMPLEX, 2, (0, 0, 255), 3) | |
| cv2.imshow("video", frame) | |
| key = cv2.waitKey(1) | |
| if key == ord('q'): | |
| break | |
| cv2.destroyAllWindows() | |