Software apps and online services
Millions of people spend 7-8 hours a day sitting in front of their computers. One common trait is apparent among people with improper computer usage: a head-forward posture. Since people usually sit while using a computer, people also tend to slouch and bend their spine into a curve as well .
Neck pain caused by improper computer usage can be prevented through mindfulness training without the need for uncomfortable equipment.
This head forward posture has been shown to exert considerable pressure on the human neck. A normal human head weighs around 10 to 12 pounds (4.54 kg). An assessment of stresses found that a 15 degrees head forward posture increased the effective weight on the neck portion of the spine to 27 pounds (12.25 kg). According to one study, work-related neck pain is twice as likely for those sitting with 20 degree neck flexion.
I built this app to help remind me when my head is too close to the computer and to improve the overall quality of my coding lifestyle. The current stage consists of an open source Python application for Mac OSX developed by the author which provides desktop notifications and tracks data in a file which can be analyzed.
Download the app.
The app uses a GUI with a PyQt backend. Users calibrate the app to their preferred, upright posture.
The app runs in the background and checks for faces for an interval which can be set by the user (2 seconds by default).
Faces are detected using OpenCV's Haar classifier:
faces = FACECASCADE.detectMultiScale( gray, scaleFactor=1.1, minNeighbors=2, minSize=(100, 100), # flags=0)
If the width of the detected face rectangle exceeds a threshold (calibrated by the user), a notification is provided:
x, y, w, h = faces if w > self.upright * SENSITIVITY: # `upright` is calibrated width subtitle='Whack!', message='Sit up strait 🙏⛩', appIcon=APP_ICON_PATH)
Posture is tracked using OpenCV's face detection with the Haar cascade method. The distance of the head to the monitor is inferred from the width of the face rectangle.
Data is saved and currently visualized with a Jupyter notebook.
The current iteration uses only the front camera, however the next will be able to use a side camera from a range of angles to determine posture:
An attached Raspberry Pi will use a neural network-based real-time pose estimation running and send a notification to the user's phone.
1 - Tittiranonda, Burastero, & Rempel, 1999