Kontrol kursor, scroll, dan volume PC Anda layaknya pesulap, hanya dengan gestur tangan di depan webcam.
Dibangun menggunakan Python, OpenCV, dan pelacakan canggih dari MediaPipe Hand Landmarker.
Antarmuka Cerdas (HUD): Aplikasi ini menampilkan overlay HUD informatif langsung di feed kamera Anda. Dilengkapi dengan Mode Eksklusif, memastikan hanya satu fitur yang aktif pada satu waktu sehingga gestur Anda tidak akan saling tumpang tindih atau bentrok.
Sistem menggunakan "Mode Eksklusif". Tahan gestur pengalih mode selama ~0.7 detik (dapat diatur) untuk berpindah fungsi.
| 🎯 Mode | 🔄 Cara Ganti Mode (Tahan Diam) | ⚙️ Cara Operasi |
|---|---|---|
| 🖱️ Kursor | Bentuk Peace Sign / V (Telunjuk + Tengah) | Arahkan telunjuk di zona aktif HUD. Rapatkan telunjuk+tengah untuk Klik. |
| 📜 Scroll | Rapatkan Jempol + Jari Manis | Tahan jempol+manis, lalu geser tangan perlahan naik atau turun. |
| 🔊 Volume | Rapatkan Jempol + Kelingking | Tahan telunjuk+tengah untuk Lock/Unlock. Gunakan jarak Jempol & Telunjuk untuk atur volume. |
Catatan: Untuk kembali ke Mode Kursor dari mode manapun, cukup tahan gestur Peace sign (V) agak lama. Secara default, pengaturan volume dalam keadaan terkunci saat Anda baru masuk ke Mode Volume untuk mencegah perubahan suara yang tidak disengaja.
- Python 3.8 atau lebih baru
- Webcam yang berfungsi
- OS: Windows / macOS / Linux
Clone repositori ini dan masuk ke dalam foldernya:
git clone [https://github.com/Hann008/Hand-Gesture-Controll.git](https://github.com/Hann008/Hand-Gesture-Controll.git)
cd Hand-Gesture-Controll
Instal dependensi dan unduh model AI:
pip install -r requirements.txt
python download_model.py
(Skrip download_model.py akan otomatis mengunduh file hand_landmarker.task ke dalam folder models/).
Jalankan perintah berikut di terminal Anda:
python main.py
Tekan tombol Q pada keyboard saat jendela kamera aktif untuk keluar dari aplikasi.
Anda dapat menyesuaikan sensitivitas dan perilaku aplikasi dengan mengedit file config.py. Berikut adalah parameter utamanya:
| Parameter | Default | Efek jika diubah |
|---|---|---|
CURSOR_ZONE_MIN_X |
0.12 |
Batas zona kursor. Semakin besar nilainya, semakin sedikit gerakan tangan yang dibutuhkan untuk mencapai ujung layar. |
SMOOTHING_ALPHA |
0.2 |
Tingkat kehalusan kursor. Nilai lebih kecil = pergerakan lebih halus (mengurangi getaran). |
CLICK_THRESHOLD |
0.05 |
Sensitivitas gestur klik. |
SCROLL_STEP |
4 |
Pengali kecepatan gulir (scroll) halaman. |
MODE_SWITCH_HOLD_SEC |
0.7 |
Durasi (detik) Anda harus menahan gestur untuk berganti mode. |
VOL_MIN_DIST |
0.03 |
Jarak minimum cubitan jari untuk volume 0%. |
VOL_MAX_DIST |
0.30 |
Jarak maksimum rentangan jari untuk volume 100%. |
| 💡 Solusi | |
|---|---|
| Kamera tidak terbuka | Buka config.py dan ubah nilai CAMERA_INDEX (coba ganti ke 0, 1, atau 2). |
| Model AI tidak ditemukan | Pastikan Anda sudah menjalankan python download_model.py. |
| Kursor bergetar parah (Jittering) | Turunkan nilai SMOOTHING_ALPHA di config.py ke 0.1 atau 0.15. |
| Teks UI tampil aneh/kotak-kotak | Pastikan nama perangkat atau input hanya menggunakan karakter ASCII. |
| Volume tidak berubah (Khusus Windows) | Pastikan library audio terinstal: jalankan pip install pycaw comtypes. |
gesture-control/
├── main.py # Entry point / File utama
├── config.py # Konfigurasi parameter & konstanta
├── mode_controller.py # Logika eksklusif & transisi gestur
├── hand_tracker.py # Modul pelacakan landmark tangan (MediaPipe)
├── cursor_controller.py # Logika mouse & penghalusan (EMA smoothing)
├── scroll_controller.py # Logika gulir vertikal
├── volume_controller.py # Kontrol volume master sistem
├── gesture_detector.py # Deteksi status jari & klik
├── ui_overlay.py # Logika rendering HUD di layar
├── ui_theme.py # Palet warna & helper desain UI
├── download_model.py # Skrip pengunduh model pelacakan otomatis
├── models/ # Direktori penyimpanan model AI (.task)
├── requirements.txt # Daftar dependensi Python
└── README.md # Dokumentasi proyek
- MediaPipe Hand Landmarker - Mesin utama untuk mendeteksi 21 titik landmark tangan secara real-time.
- OpenCV - Untuk menangkap feed kamera dan menggambar antarmuka visual (HUD).
- PyAutoGUI - Mentranslasikan koordinat tangan menjadi pergerakan dan klik mouse OS.
- pycaw - Mengatur level audio sistem pada Windows.
Proyek ini dibangun untuk tujuan edukasi dan open-source. Bebas untuk dimodifikasi dan dikembangkan lebih lanjut. Catatan: Model MediaPipe dilisensikan dan dikelola oleh Google.