Skip to content

Krirox/learn-mediapipe-monkey-meme

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

2 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽญ Gesture Detection - Pose Matching

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.

๐ŸŒŸ Fitur

  • โœ… 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

๐Ÿ“‹ Requirements

  • Python 3.8 atau lebih tinggi
  • Webcam
  • Dependencies (lihat requirements.txt)

๐Ÿš€ Instalasi

1. Clone atau Download Project

cd e:\make_meme_with_Python1

2. Buat Virtual Environment (Opsional tapi Direkomendasikan)

# Buat virtual environment
python -m venv .venv

# Aktifkan virtual environment
.venv\Scripts\Activate.ps1

3. Install Dependencies

pip install -r requirements.txt

๐Ÿ“ธ Persiapan Gambar Referensi

  1. Siapkan gambar pose yang ingin Anda deteksi
  2. Letakkan gambar-gambar tersebut di folder reference_images/
  3. 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

๐ŸŽฎ Cara Menggunakan

Menjalankan Aplikasi

1. Test Detection (tanpa gambar referensi):

python test_detection.py

Ini akan menampilkan webcam dengan skeleton detection untuk test apakah pose + hand tracking bekerja.

2. Aplikasi Utama (dengan matching):

python main.py

Kontrol Aplikasi

  • Q: Keluar dari aplikasi
  • S: Save screenshot side-by-side ke folder output/

Cara Kerja

  1. Aplikasi membaca semua gambar di folder reference_images/
  2. MediaPipe mendeteksi pose + hands di setiap gambar referensi
  3. Webcam terbuka dan mulai mendeteksi pose + tangan Anda
  4. Side-by-side view:
    • Kiri: Webcam Anda dengan skeleton overlay
    • Kanan: Gambar referensi yang match
  5. Pose Anda dibandingkan dengan semua pose referensi
  6. Jika similarity โ‰ฅ 85%, gambar referensi ditampilkan di kanan

โš™๏ธ Konfigurasi

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.5

๐Ÿ“ Struktur Project

make_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)

๐Ÿง  Cara Kerja Algoritma

1. Deteksi Pose (MediaPipe)

  • MediaPipe mendeteksi 33 landmark points di tubuh
  • Setiap landmark memiliki koordinat (x, y, visibility)

2. Normalisasi

  • Koordinat dinormalisasi dengan centering dan scaling
  • Menghilangkan efek posisi dan ukuran tubuh

3. Similarity Calculation

  • Menggunakan Cosine Similarity
  • Membandingkan vektor pose saat ini dengan pose referensi
  • Score: 0 (tidak mirip) - 1 (identik)

4. Matching

  • Pose dianggap cocok jika similarity โ‰ฅ threshold (default: 0.85)
  • Menampilkan nama pose dan score

๐ŸŽฏ Tips Penggunaan

  1. Pencahayaan: Pastikan ruangan cukup terang
  2. Background: Background yang bersih membantu deteksi
  3. Jarak: Berdiri sekitar 1-2 meter dari webcam
  4. Framing: Pastikan seluruh tubuh terlihat di frame
  5. Pose yang Jelas: Buat pose yang distinctive dan mudah dibedakan

๐Ÿ› Troubleshooting

Webcam tidak terbuka

  • Pastikan webcam terhubung dan tidak digunakan aplikasi lain
  • Coba ubah CAMERA_INDEX di config.py (0, 1, 2, ...)

Pose tidak terdeteksi

  • Pastikan pencahayaan cukup
  • Pastikan seluruh tubuh terlihat
  • Coba ubah MIN_DETECTION_CONFIDENCE di config.py

Similarity terlalu rendah

  • Turunkan SIMILARITY_THRESHOLD di config.py
  • Pastikan pose referensi yang baik
  • Coba pose yang lebih ekstrim/jelas

Import error

# Pastikan dependencies terinstall
pip install -r requirements.txt

๐Ÿ”ง Pengembangan Lebih Lanjut

Ide 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

๐Ÿ“š Referensi

๐Ÿ“ License

Free to use for learning purposes.

๐Ÿ‘จโ€๐Ÿ’ป Author

Created for learning gesture detection with Python, OpenCV, and MediaPipe.


Happy Coding! ๐Ÿš€

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 99.0%
  • Batchfile 1.0%