From dd1248722ed8f15aeaee95dd053d6cbcedbb2481 Mon Sep 17 00:00:00 2001 From: Arne Gerdes Date: Sat, 4 Nov 2017 09:47:51 +0100 Subject: [PATCH] =?UTF-8?q?Haarcascade=20und=20Landmarks=20zu=20Main=20ein?= =?UTF-8?q?gef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- projectmood/main.py | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/projectmood/main.py b/projectmood/main.py index 86efd9f..039fb41 100644 --- a/projectmood/main.py +++ b/projectmood/main.py @@ -1,8 +1,16 @@ import cv2 import sys -import cvhelper +import dlib + +from projectmood import cvhelper + def main(): + # Set up some required objects + detector = dlib.get_frontal_face_detector() # Face detector + detectors = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') + predictor = dlib.shape_predictor( + "shape_predictor_68_face_landmarks.dat") # Landmark identifier. Set the filename to whatever you named the downloaded file if len(sys.argv) > 1: cap = cv2.VideoCapture(str(sys.argv[1])) @@ -16,6 +24,23 @@ def main(): # Our operations on the frame come here gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) + clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8)) + clahe_image = clahe.apply(gray) + faces = detectors.detectMultiScale(gray, 1.3, 5) + + detections = detector(clahe_image, 1) # Detect the faces in the image + + for k, d in enumerate(detections): # For each detected face + + shape = predictor(clahe_image, d) # Get coordinates + for i in range(1, 68): # There are 68 landmark points on each face + cv2.circle(gray, (shape.part(i).x, shape.part(i).y), 1, (0, 0, 255), + thickness=2) # For each point, draw a red circle with thickness2 on the original frame + for (x, y, w, h) in faces: + cv2.rectangle(gray, (x, y), (x + w, y + h), (255, 0, 0), 2) + roi_gray = gray[y:y + h, x:x + w] + roi_color = frame[y:y + h, x:x + w] + cvhelper.createwindow('Grayscale', gray) -- GitLab