A touch-free gesture-controlled infotainment system that uses real-time hand tracking and gesture recognition to provide an interactive interface for Music, Navigation, Settings, and Calls.
Developed as a team mini-project, the system explores gesture-based human-computer interaction using MediaPipe Hands, OpenCV, JavaScript, and web technologies.
- Real-time hand tracking using a webcam
- Hand landmark detection using MediaPipe Hands
- Index-finger-controlled virtual pointer
- Thumb and index finger pinch detection
- Gesture-based interaction with supported interface elements
- Music playback and media controls
- Volume adjustment
- Navigation interface with interactive maps
- Destination search
- Calls and contacts interface
- Settings and display controls
- Keyboard and mouse-based interaction for testing
- Real-time visualization of detected hand landmarks
The project contains both a Python-based gesture prototype and a browser-based infotainment interface.
- OpenCV captures live video from the webcam.
- Each frame is processed using MediaPipe Hands.
- MediaPipe detects and tracks hand landmarks in real time.
- The index fingertip coordinates are used as a virtual pointer.
- The distance between the thumb and index finger is used to detect a pinch gesture.
- Detected hand landmarks and the virtual cursor are displayed on the infotainment interface.
- Music, Navigation, Settings, and Calls screens can be switched using keyboard controls.
The browser interface uses MediaPipe Hands through JavaScript to process webcam input and support gesture-driven interaction.
The interface includes:
- Gesture-controlled pointer interaction
- Pinch detection
- Music playback controls
- Playlist handling
- Volume controls
- Playback progress control
- Interactive navigation
- Destination search
- Calls and contacts interface
- Settings controls
- Keyboard and mouse interaction for testing
- Python
- OpenCV
- MediaPipe
- HTML5
- CSS3
- JavaScript
- Leaflet.js
- OpenStreetMap
- Nominatim
Gesture_App/
├── index.html
├── infotainment_gestures.py
├── script.js
├── style.css
├── song1.mp3
├── song 2.mp3
├── song 3.mp3
├── .gitignore
└── README.md
git clone https://github.com/parnika0110/Gesture_App.git
cd Gesture_AppInstall the dependencies required for the Python gesture prototype:
pip install opencv-python mediapipepython infotainment_gestures.pyMake sure your computer has a working webcam and allow camera access when required.
Open index.html using a local web server.
For example, using Python:
python -m http.server 8000Then open the local server address displayed in the terminal.
Allow camera access in the browser when prompted so that MediaPipe can process the webcam feed.
Some optional browser functionality references PHP API endpoints for songs and contacts. These backend API files are not included in the current repository.
The Python prototype supports the following keyboard controls:
M— MusicN— NavigationS— SettingsC— CallsQ— Quit application
- Move index finger — controls the virtual pointer
- Bring thumb and index finger together — detects a pinch gesture
The browser implementation additionally uses gesture detection for interaction with supported interface controls.
The infotainment interface provides music-related functionality including:
- Play and pause
- Previous and next track
- Stop playback
- Volume adjustment
- Playback progress
- Playlist handling
- Local audio support
Sample audio files are included in the project for demonstrating the music interface.
The browser interface uses Leaflet.js with OpenStreetMap tiles to provide interactive map visualization.
Destination search uses Nominatim to search for locations entered by the user.
The infotainment interface includes a Calls section designed to demonstrate an in-vehicle calling interface.
The Python prototype provides simulated incoming-call controls, while the browser interface contains functionality for working with contact information.
The Settings interface demonstrates controls for infotainment preferences and display-related options.
The browser implementation also contains interactive controls that can be manipulated through standard input or supported gesture interactions.
Camera input is used for real-time hand tracking and gesture recognition.
Users should allow webcam access only when running the gesture-controlled functionality and should review browser camera permissions when using the web interface.
- Improve gesture recognition accuracy
- Add additional custom gestures
- Support multi-hand gesture recognition
- Integrate a complete backend for contacts and media
- Add real calling functionality
- Improve navigation and route guidance
- Expand gesture-based media controls
- Improve responsiveness across different devices
- Add more configurable gesture actions
This project was developed collaboratively as a team mini-project. The original Git commit history is preserved to maintain accurate attribution of contributions.
- Parnika S M
- Jayashankar P
This project was developed for educational and learning purposes.