diff options
author | Saumit Dinesan <justsaumit@protonmail.com> | 2023-03-18 17:10:53 +0530 |
---|---|---|
committer | Saumit Dinesan <justsaumit@protonmail.com> | 2023-03-18 17:10:53 +0530 |
commit | e65971af1c75bf02e07cedeb0f1a66dc9e1a1690 (patch) | |
tree | 569ab43c8b96cd11ba55c47be89cb9b180838bf6 /face-detection/03_face_recogition.py | |
parent | 0cacd048bf88549de4385d5bec3ed6edcf67859c (diff) |
Adding face capture,training,recognition script
Diffstat (limited to 'face-detection/03_face_recogition.py')
-rw-r--r-- | face-detection/03_face_recogition.py | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/face-detection/03_face_recogition.py b/face-detection/03_face_recogition.py new file mode 100644 index 0000000..e0da838 --- /dev/null +++ b/face-detection/03_face_recogition.py @@ -0,0 +1,67 @@ +import cv2 +import numpy as np +import os +recognizer = cv2.face.LBPHFaceRecognizer_create() +recognizer.read('trainer/trainer.yml') +cascadePath = "haarcascade_frontalface_default.xml" +faceCascade = cv2.CascadeClassifier(cascadePath); +font = cv2.FONT_HERSHEY_COMPLEX +#font = cv2.FONT_HERSHEY_TRIPLEX +id = 0 +# names related to id +names = ['None', 'Obamna', 'Soda', 'Orange'] +# Initialize and start realtime video capture +cam = cv2.VideoCapture(0) +cam.set(3, 640) # set video widht +cam.set(4, 480) # set video height +# Define min window size to be recognized as a face +minW = 0.1*cam.get(3) +minH = 0.1*cam.get(4) +while True: + ret, img =cam.read() + gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) + + faces = faceCascade.detectMultiScale( + gray, + scaleFactor = 1.2, + minNeighbors = 5, + minSize = (int(minW), int(minH)), + ) + for(x,y,w,h) in faces: + cv2.rectangle(img, (x,y), (x+w,y+h), (0,255,0), 2) + id, confidence = recognizer.predict(gray[y:y+h,x:x+w]) + + # If confidence is less them 100 ==> "0" : perfect match + if (confidence < 100): + id = names[id] + confidence = " {0}%".format(round(100 - confidence)) + else: + id = "unknown" + confidence = " {0}%".format(round(100 - confidence)) + + cv2.putText( + img, + str(id), + (x+5,y-5), + font, + 1, + (255,255,255), + 2 + ) + cv2.putText( + img, + str(confidence), + (x+5,y+h-5), + font, + 1, + (255,255,0), + 1 + ) + + cv2.imshow('camera',img) + k = cv2.waitKey(10) & 0xff # Press 'ESC' for exiting video + if k == 27: + break +print("\n [INFO] Exiting Program and cleaning up stuff") +cam.release() +cv2.destroyAllWindows() |