samples: use findFile() in "python"
[platform/upstream/opencv.git] / samples / python / tutorial_code / objectDetection / cascade_classifier / objectDetection.py
1 from __future__ import print_function
2 import cv2 as cv
3 import argparse
4
5 def detectAndDisplay(frame):
6     frame_gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
7     frame_gray = cv.equalizeHist(frame_gray)
8
9     #-- Detect faces
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)
14
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)
22
23     cv.imshow('Capture - Face detection', frame)
24
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()
30
31 face_cascade_name = args.face_cascade
32 eyes_cascade_name = args.eyes_cascade
33
34 face_cascade = cv.CascadeClassifier()
35 eyes_cascade = cv.CascadeClassifier()
36
37 #-- 1. Load the cascades
38 if not face_cascade.load(cv.samples.findFile(face_cascade_name)):
39     print('--(!)Error loading face cascade')
40     exit(0)
41 if not eyes_cascade.load(cv.samples.findFile(eyes_cascade_name)):
42     print('--(!)Error loading eyes cascade')
43     exit(0)
44
45 camera_device = args.camera
46 #-- 2. Read the video stream
47 cap = cv.VideoCapture(camera_device)
48 if not cap.isOpened:
49     print('--(!)Error opening video capture')
50     exit(0)
51
52 while True:
53     ret, frame = cap.read()
54     if frame is None:
55         print('--(!) No captured frame -- Break!')
56         break
57
58     detectAndDisplay(frame)
59
60     if cv.waitKey(10) == 27:
61         break