| 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() |
|
|