Project mini Python untuk belajar gesture detection menggunakan OpenCV dan MediaPipe. Aplikasi ini mendeteksi pose tubuh Anda melalui webcam dan mencocokkannya dengan gambar referensi yang Anda berikan.
- โ Deteksi pose tubuh real-time menggunakan MediaPipe (33 landmarks)
- โ Hand tracking untuk deteksi jari-jari tangan (21 landmarks per tangan)
- โ Pencocokan pose dengan gambar referensi
- โ Side-by-side view: Webcam vs Gambar Referensi
- โ Visualisasi skeleton pose dan tangan
- โ Similarity score untuk setiap pose
- โ Screenshot feature
- โ FPS counter
- Python 3.8 atau lebih tinggi
- Webcam
- Dependencies (lihat
requirements.txt)
cd e:\make_meme_with_Python1# Buat virtual environment
python -m venv .venv
# Aktifkan virtual environment
.venv\Scripts\Activate.ps1pip install -r requirements.txt- Siapkan gambar pose yang ingin Anda deteksi
- Letakkan gambar-gambar tersebut di folder
reference_images/ - Beri nama file sesuai dengan nama pose (contoh:
tpose.jpg,wave.png,peace.jpg)
Tips untuk gambar referensi yang baik:
- Pastikan pose tubuh terlihat jelas
- Background yang kontras dengan tubuh
- Resolusi yang cukup (minimal 640x480)
- Format: JPG, JPEG, PNG, atau BMP
Contoh struktur:
reference_images/
โโโ tpose.jpg # Pose T dengan tangan terbentang
โโโ wave.png # Pose melambai
โโโ peace.jpg # Pose peace sign
โโโ superhero.png # Pose superhero
1. Test Detection (tanpa gambar referensi):
python test_detection.pyIni akan menampilkan webcam dengan skeleton detection untuk test apakah pose + hand tracking bekerja.
2. Aplikasi Utama (dengan matching):
python main.py- Q: Keluar dari aplikasi
- S: Save screenshot side-by-side ke folder
output/
- Aplikasi membaca semua gambar di folder
reference_images/ - MediaPipe mendeteksi pose + hands di setiap gambar referensi
- Webcam terbuka dan mulai mendeteksi pose + tangan Anda
- Side-by-side view:
- Kiri: Webcam Anda dengan skeleton overlay
- Kanan: Gambar referensi yang match
- Pose Anda dibandingkan dengan semua pose referensi
- Jika similarity โฅ 85%, gambar referensi ditampilkan di kanan
Edit file config.py untuk mengubah pengaturan:
# Threshold untuk menganggap pose cocok (0-1)
SIMILARITY_THRESHOLD = 0.85
# Resolusi camera
CAMERA_WIDTH = 640
CAMERA_HEIGHT = 480
# Confidence untuk deteksi
MIN_DETECTION_CONFIDENCE = 0.5
MIN_TRACKING_CONFIDENCE = 0.5make_meme_with_Python1/
โโโ main.py # File utama aplikasi
โโโ gesture_detector.py # Modul deteksi pose
โโโ pose_matcher.py # Modul pencocokan pose
โโโ config.py # File konfigurasi
โโโ requirements.txt # Dependencies
โโโ README.md # Dokumentasi (file ini)
โโโ reference_images/ # Folder untuk gambar referensi
โ โโโ tpose.jpg
โ โโโ wave.png
โโโ output/ # Folder untuk screenshot
โโโ utils/ # Folder untuk utility (future use)
- MediaPipe mendeteksi 33 landmark points di tubuh
- Setiap landmark memiliki koordinat (x, y, visibility)
- Koordinat dinormalisasi dengan centering dan scaling
- Menghilangkan efek posisi dan ukuran tubuh
- Menggunakan Cosine Similarity
- Membandingkan vektor pose saat ini dengan pose referensi
- Score: 0 (tidak mirip) - 1 (identik)
- Pose dianggap cocok jika similarity โฅ threshold (default: 0.85)
- Menampilkan nama pose dan score
- Pencahayaan: Pastikan ruangan cukup terang
- Background: Background yang bersih membantu deteksi
- Jarak: Berdiri sekitar 1-2 meter dari webcam
- Framing: Pastikan seluruh tubuh terlihat di frame
- Pose yang Jelas: Buat pose yang distinctive dan mudah dibedakan
- Pastikan webcam terhubung dan tidak digunakan aplikasi lain
- Coba ubah
CAMERA_INDEXdiconfig.py(0, 1, 2, ...)
- Pastikan pencahayaan cukup
- Pastikan seluruh tubuh terlihat
- Coba ubah
MIN_DETECTION_CONFIDENCEdiconfig.py
- Turunkan
SIMILARITY_THRESHOLDdiconfig.py - Pastikan pose referensi yang baik
- Coba pose yang lebih ekstrim/jelas
# Pastikan dependencies terinstall
pip install -r requirements.txtIde untuk pengembangan:
- Tambah gesture tangan (hand landmarks)
- Record video hasil matching
- Database pose dengan SQLite
- GUI dengan Tkinter/PyQt
- Real-time pose correction feedback
- Multi-person detection
- Export pose data ke JSON
Free to use for learning purposes.
Created for learning gesture detection with Python, OpenCV, and MediaPipe.
Happy Coding! ๐