-
Notifications
You must be signed in to change notification settings - Fork 552
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Contours sorting and mouse movement #6
Comments
Hi @codeYazar
The algorithm detects faces, eyes and then processes the frame to get that: The black block is the iris. We use it to calculate the centroid (I consider that is the pupil position). First, it's necessary to detect this contour: _, contours, _ = cv2.findContours(self.iris_frame, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE) It returns a list of several contours:
Of course, we want to get only the iris contour. So to do that, the algorithm sorts the contours list by size: contours = sorted(contours, key=cv2.contourArea) The contours are now sorted from the smallest to the largest. So we can access iris contour like so:
I don't understand well your question. Do you want to use it to move your mouse? |
Yeah. I want to move the mouse with my eyes. But the head will not be fixed. He should let the head move. |
To have the relative coordinates of the pupils, without the position of the head having any impact, you can change: def pupil_left_coords(self):
"""Returns the coordinates of the left pupil"""
if self.pupils_located:
x = self.eye_left.origin[0] + self.eye_left.pupil.x
y = self.eye_left.origin[1] + self.eye_left.pupil.y
return (x, y) to def pupil_left_coords(self):
"""Returns the coordinates of the left pupil"""
if self.pupils_located:
x = self.eye_left.pupil.x
y = self.eye_left.pupil.y
return (x, y) |
I tried using horizontal_ratio and vertical_ratio to move the mouse cursor (using pyautogui library) as in, `` X,Y = gaze.horizontal_ratio(),gaze.vertical_ratio()
The performance isn't good. Is there any better way or a calibration technique I'm missing? |
Hi @wittynerd, |
First of all, your work is working very well. And I'm new on this. I'm trying to understand codes.
what does it mean , especially [-2] in moments = cv2.moments(contours[-2])
I also want to ask you how to match the coordinates on the webcam, on the PC screen. Thanks
The text was updated successfully, but these errors were encountered: