1 from __future__ import print_function
5 def detectAndDisplay(frame):
6 frame_gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
7 frame_gray = cv.equalizeHist(frame_gray)
10 faces = face_cascade.detectMultiScale(frame_gray)
11 for (x,y,w,h) in faces:
12 center = (x + w//2, y + h//2)
13 frame = cv.ellipse(frame, center, (w//2, h//2), 0, 0, 360, (255, 0, 255), 4)
15 faceROI = frame_gray[y:y+h,x:x+w]
16 #-- In each face, detect eyes
17 eyes = eyes_cascade.detectMultiScale(faceROI)
18 for (x2,y2,w2,h2) in eyes:
19 eye_center = (x + x2 + w2//2, y + y2 + h2//2)
20 radius = int(round((w2 + h2)*0.25))
21 frame = cv.circle(frame, eye_center, radius, (255, 0, 0 ), 4)
23 cv.imshow('Capture - Face detection', frame)
25 parser = argparse.ArgumentParser(description='Code for Cascade Classifier tutorial.')
26 parser.add_argument('--face_cascade', help='Path to face cascade.', default='data/haarcascades/haarcascade_frontalface_alt.xml')
27 parser.add_argument('--eyes_cascade', help='Path to eyes cascade.', default='data/haarcascades/haarcascade_eye_tree_eyeglasses.xml')
28 parser.add_argument('--camera', help='Camera devide number.', type=int, default=0)
29 args = parser.parse_args()
31 face_cascade_name = args.face_cascade
32 eyes_cascade_name = args.eyes_cascade
34 face_cascade = cv.CascadeClassifier()
35 eyes_cascade = cv.CascadeClassifier()
37 #-- 1. Load the cascades
38 if not face_cascade.load(cv.samples.findFile(face_cascade_name)):
39 print('--(!)Error loading face cascade')
41 if not eyes_cascade.load(cv.samples.findFile(eyes_cascade_name)):
42 print('--(!)Error loading eyes cascade')
45 camera_device = args.camera
46 #-- 2. Read the video stream
47 cap = cv.VideoCapture(camera_device)
49 print('--(!)Error opening video capture')
53 ret, frame = cap.read()
55 print('--(!) No captured frame -- Break!')
58 detectAndDisplay(frame)
60 if cv.waitKey(10) == 27: