Computer Vision Syndrome is a common condition caused due to eye strain. Due to the coronavirus pandemic, our lifestyles have shifted to computers and laptops. I wanted to make something which helps us to prevent Computer Vision Syndrome which is caused due to eye strain by focusing your eyes on a display device for uninterrupted periods of time and not blinking enough.
What it does
Heyelth, monitors your eye blinks through your webcam and calculates your blinks per minute! If your blink rate is less than the average blink rate, it sends you a notification telling that your blink rate is low!
It also sends you notifications after 20 minutes to take a break for 20 seconds and look at something 20 feet away!
It helps us to take precautions against Computer Vision Syndrome
I had run the program in the background and forgot that it was running, My blink rate came out to be 3 blinks per minute! Surprising yes.
How I built it
I used opencv to detect the face and then I used dlib to get the facial landmarks and processed them. With the help of this paper by Tereza Soukupova and Jan ´ Cech, I used the required landmarks to calculate the Eye Aspect Ratio.
Using some basic mathematics, and thresholds and other variables, I was able to detect eye blinks and the blink rate per minute of the user.
After that I set up the notifications!
I used PyQt5 to design the interface of the app and notify2 to send notifications to the users.
Challenges I ran into
Making the app cross platform was a challenge! I had to work using multiple notification and sound systems to figure out which would be the best for my case. I had to improve the quality of my code as it was using up a large amount of cpu in the start.
Accomplishments that I'm proud of
I was able to make the app cross-platform!, which means that the app runs on Windows, Mac and Linux!
What I learned
I learnt PyQt5 to make the app interface in a single day!
What's next for Heyelth
I plan on making a website where people can download the app and use it for themselves, also a dark mode and minimize to system tray option!