Advertisement
renix1

face_detector

Sep 11th, 2020
1,565
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.55 KB | None | 0 0
  1. import cv2
  2. import camera
  3. import ctypes
  4.  
  5.  
  6. class Cam(object):
  7.     def __init__(self):
  8.         self.__cap = cv2.VideoCapture(0)
  9.  
  10.     def __enter__(self):
  11.         ret, frame = self.__cap.read()
  12.         return frame
  13.  
  14.     def __exit__(self, type, val, traceback):
  15.         self.__cap.release()
  16.  
  17.  
  18. class FaceDetection(object):
  19.     def __init__(self):
  20.         self.__current_try = 0
  21.         self.__max_tries = 2
  22.         self.__frame = None
  23.         self.__face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")
  24.  
  25.     def attach(self, frame):
  26.         print("Anexando outro frame [{}]".format(frame))
  27.         self.__frame = frame
  28.  
  29.     def lock(self):
  30.         if self.__current_try < self.__max_tries:
  31.             self.__current_try += 1
  32.         else:
  33.             self.__current_try = 0
  34.             ctypes.windll.user32.LockWorkStation()
  35.  
  36.     def run(self):
  37.         print("Método [RUN] rodando...")
  38.         faces = self.__face_cascade.detectMultiScale(self.__frame, 1.1, 5)
  39.         if len(faces) == 0:
  40.             print("Nenhum rosto na frente da câmera")
  41.             self.lock()
  42.         else:
  43.             print("Rosto(s) detectado(s)")
  44.  
  45.     def __enter__(self):
  46.         print("Rodando Detector")
  47.         return self
  48.  
  49.  
  50.     def __exit__(self, type, val, traceback):
  51.         print("Detector de faces sendo fechado")
  52.  
  53.  
  54. if __name__ == "__main__":
  55.     with FaceDetection() as detector:
  56.         while 1:
  57.             with Cam() as frame:
  58.                 detector.attach(frame)
  59.                 detector.run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement