summaryrefslogtreecommitdiff
path: root/face-detection/03_face_recogition.py
diff options
context:
space:
mode:
authorSaumit Dinesan <justsaumit@protonmail.com>2023-03-18 17:10:53 +0530
committerSaumit Dinesan <justsaumit@protonmail.com>2023-03-18 17:10:53 +0530
commite65971af1c75bf02e07cedeb0f1a66dc9e1a1690 (patch)
tree569ab43c8b96cd11ba55c47be89cb9b180838bf6 /face-detection/03_face_recogition.py
parent0cacd048bf88549de4385d5bec3ed6edcf67859c (diff)
Adding face capture,training,recognition script
Diffstat (limited to 'face-detection/03_face_recogition.py')
-rw-r--r--face-detection/03_face_recogition.py67
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()