-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy patheyetracker.py
31 lines (26 loc) · 952 Bytes
/
eyetracker.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
__author__ = 'XJH'
import cv2
class EyeTracker:
def __init__(self, faceCascadePath, eyeCascadePath):
self.faceCascade = cv2.CascadeClassifier(faceCascadePath)
self.eyeCascade = cv2.CascadeClassifier(eyeCascadePath)
def track(self, image):
faceRects = self.faceCascade.detectMultiScale(image,
scaleFactor = 1.1,
minNeighbors = 5,
minSize = (30, 30),
flags = cv2.CASCADE_SCALE_IMAGE)
rects = []
for (fX, fY, fW, fH) in faceRects:
faceROI = image[fY:fY + fH, fX:fX + fW]
rects.append((fX, fY, fX + fW, fY + fH))
eyeRects = self.eyeCascade.detectMultiScale(faceROI,
scaleFactor = 1.1,
minNeighbors = 10,
minSize = (20, 20),
flags = cv2.CASCADE_SCALE_IMAGE)
for (eX, eY, eW, eH) in eyeRects:
rects.append(
(fX + eX, fY + eY, fX + eX + eW, fY + eY + eH)
)
return rects