An open-source Human-Computer Interaction (HCI) project that uses facial landmarks and eye-blink detection to simulate keyboard input using only facial movements. This application enables users to select characters on a virtual keyboard through column scanning and blink detection — empowering hands-free communication and accessibility.
- Project Overview
- Features
- Getting Started
- Installation & Setup
- Usage
- Technologies Used
- Contributing
- Credits
This project leverages OpenCV, dlib, and facial landmark detection to implement a virtual keyboard navigable using eye blinks and column-row scanning logic. It’s ideal for accessibility applications or touchless interfaces where traditional input methods are impractical.
✅ Real-time facial landmark detection ✅ Virtual keyboard grid with character highlighting ✅ Blink-controlled character selection ✅ Column-row scanning mechanism ✅ Works on standard webcam input
Follow these steps to run the project locally on your machine.
git clone https://github.com/vivekbargude/FaceBoard.git
cd FaceBoardMake sure you have Python 3.6+ installed.
pip install opencv-python dlib numpy💡 Note: Installing
dlibmay require CMake and Visual Studio Build Tools on Windows.
Download the shape_predictor_68_face_landmarks.dat file from:
🔗 http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2
Extract it and place it in the desired location (update the path in the script accordingly):
predictor = dlib.shape_predictor("path_to/shape_predictor_68_face_landmarks.dat")python facial_keyboard.pyMake sure your webcam is connected and accessible.
- Face Detection: Uses dlib to detect face and 68 facial landmarks.
- Column Scanning: Columns are highlighted sequentially.
- Blink to Select Column: When the user blinks, the currently highlighted column is selected.
- Row Scanning: Rows in the selected column are scanned.
- Blink to Select Character: Another blink selects the character, which is added to the text buffer.
Escape key
ESCexits the program.
- Python 3.6+
- OpenCV – Real-time image processing
- dlib – Face detection and landmark estimation
- NumPy – Array operations
We welcome contributions to improve functionality and performance.
-
Fork the repo
-
Clone it:
git clone https://github.com/vivekbargude/FaceBoard.git
-
Make your changes and test locally
-
Submit a pull request
Developed by: Vivek Bargude
Inspired by accessibility challenges and advancements in facial gesture interfaces.