<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/medium-eyv3bfnto" -->

---
title: Medium | daily.dev
description: A student project walkthrough building a virtual piano using Python, OpenCV, MediaPipe Hands, and NumPy. The webcam detects hand landmarks in real time, tracks...
canonical: https://daily.dev/posts/medium-eyv3bfnto
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Medium | daily.dev
og:description: A student project walkthrough building a virtual piano using Python, OpenCV, MediaPipe Hands, and NumPy. The webcam detects hand landmarks in real time, tracks...
og:url: https://daily.dev/posts/medium-eyv3bfnto
og:image: https://api.daily.dev/og/posts/EYv3BFnTo.png
og:image:alt: Medium
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Medium

**[Medium](https://daily.dev/sources/medium_js)** · 9 min read · 0 upvotes · 0 comments

## Summary

A student project walkthrough building a virtual piano using Python, OpenCV, MediaPipe Hands, and NumPy. The webcam detects hand landmarks in real time, tracks the index fingertip position, maps it to virtual piano keys drawn on screen, and plays corresponding audio notes. The post covers the system architecture, key code snippets, challenges like repeated audio triggering and lighting sensitivity, performance optimizations, and potential future improvements such as multi-hand support and MIDI integration.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://medium.com/@mrudul26mm/from-hand-gestures-to-music-building-a-virtual-piano-using-computer-vision-mediapipe-and-b8046c61c647>

## Similar posts on daily.dev

- [I Ditched My Mouse: How I Control My Computer With Hand Gestures \(In 60 Lines of Python\)](https://daily.dev/posts/i-ditched-my-mouse-how-i-control-my-computer-with-hand-gestures-in-60-lines-of-python--kbg4g2jli) · Towards Data Science · 1 upvotes · 0 comments
- [Real-time Face Detection at 30 FPS on CPU using Mediapipe in Python: A Step-by-Step Guide.](https://daily.dev/posts/real-time-face-detection-at-30-fps-on-cpu-using-mediapipe-in-python-a-step-by-step-guide--hwd9gsy0k) · Towards Dev · 2 upvotes · 0 comments
- [Interact with Game World with Your Hands & Breath](https://daily.dev/posts/interact-with-game-world-with-your-hands-breath-nwqdxkmte) · 80 LEVEL · 0 upvotes · 0 comments

---

Tags: [#python](https://daily.dev/tags/python), [#computer-vision](https://daily.dev/tags/computer-vision), [#opencv](https://daily.dev/tags/opencv)

[View this post on daily.dev](https://daily.dev/posts/medium-eyv3bfnto)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Medium","url":"https://daily.dev/posts/medium-eyv3bfnto","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/medium-eyv3bfnto"},"datePublished":"2026-07-26T06:56:53.085Z","dateModified":"2026-07-26T07:02:57.239Z","description":"A student project walkthrough building a virtual piano using Python, OpenCV, MediaPipe Hands, and NumPy. The webcam detects hand landmarks in real time, tracks...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/4873fb0368857e06ae00be6785efea7d?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/4873fb0368857e06ae00be6785efea7d?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Medium","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Medium","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium","url":"https://daily.dev/sources/medium_js"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/medium-eyv3bfnto","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"python,computer-vision,opencv","timeRequired":"PT9M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Medium","item":"https://daily.dev/sources/medium_js"},{"@type":"ListItem","position":3,"name":"Medium"}]}
```

