Skip to content

rotatedcoded/gesture-camera-effects

Repository files navigation

Interactive Gesture Rectangle Camera with Multi Visual Effects

Description

Membangun aplikasi Computer Vision berbasis Python + OpenCV + MediaPipe Hands yang memungkinkan pengguna membuat area efek kamera secara interaktif menggunakan gesture dua tangan.

Pengguna membuat sebuah rectangle dengan melakukan gesture pinch pada kedua tangan. Rectangle mengikuti pergerakan tangan selama pinch masih dilakukan. Ketika pinch dilepas, rectangle akan terkunci (locked) dan langsung menerapkan efek visual unik hanya pada area rectangle.

Aplikasi mendukung beberapa rectangle aktif secara bersamaan, sehingga setiap area dapat memiliki efek yang berbeda.

Alur Penggunaan

  1. Deteksi Tangan

Program mendeteksi:

  • Tangan kiri
  • Tangan kanan

Menggunakan MediaPipe Hands.

  1. Gesture Membuat Rectangle

Syarat:

  • Kedua tangan harus melakukan pinch (ujung ibu jari dan ujung telunjuk bersentuhan).

  • Ketika kondisi ini terpenuhi:

    • Rectangle dibuat.

    • Sudut diagonal rectangle menggunakan:

      • Ujung telunjuk tangan kiri
      • Ujung telunjuk tangan kanan
    • Rectangle akan terus mengikuti pergerakan kedua telunjuk selama pinch dipertahankan.

  1. Lock Rectangle

Saat salah satu atau kedua tangan melepaskan pinch:

  • Rectangle berhenti bergerak.
  • Posisi rectangle disimpan secara permanen.
  • Efek visual langsung diterapkan pada area rectangle.

Rectangle yang sudah terkunci tidak dapat dipindahkan lagi.

Efek Kamera

Efek hanya diterapkan di dalam area rectangle, sedangkan area di luar rectangle tetap menampilkan tampilan kamera normal.

Empat efek yang digunakan:

Urutan Efek Deskripsi
1 🌫️ Gaussian Blur Area menjadi buram dengan transisi halus.
2 🟦 Pixelation Area berubah menjadi tampilan kotak-kotak (mosaic).
3 🎨 Cartoon Area berubah menjadi gaya kartun menggunakan kombinasi smoothing dan edge detection.
4 ⚡ Edge Detection Area hanya menampilkan garis tepi objek sehingga terlihat futuristik.

Setiap rectangle baru akan mendapatkan efek secara berurutan:

Rectangle 1 → Gaussian Blur Rectangle 2 → Pixelation Rectangle 3 → Cartoon Rectangle 4 → Edge Detection Rectangle 5 → Gaussian Blur ...

Multi Rectangle

Pengguna dapat membuat beberapa rectangle.

Contoh:

Rectangle 1 → Gaussian Blur Rectangle 2 → Pixelation Rectangle 3 → Cartoon Rectangle 4 → Edge Detection

Seluruh rectangle tetap aktif secara bersamaan.

Gesture Hapus

Gesture:

  • Closed Fist (tangan mengepal)

Fungsi:

  • Menghapus rectangle terakhir yang dibuat (Undo).
  • Rectangle lainnya tetap aktif beserta efeknya.

Arsitektur Program

Webcam │ ▼ OpenCV │ ▼ MediaPipe Hands │ ▼ Gesture Detector │ ▼ Rectangle Manager │ ▼ Effect Manager │ ▼ Renderer │ ▼ Camera Display

Struktur Projekt

gesture-camera-effects/ │ ├── main.py ├── camera.py ├── hand_tracker.py ├── gesture_detector.py ├── rectangle.py ├── rectangle_manager.py ├── effects.py ├── effect_manager.py ├── renderer.py ├── utils.py │ ├── assets/ │ └── requirements.txt

State Machine

Idle │ ▼ Both Hands Pinch │ ▼ Drawing Rectangle │ Release Pinch │ ▼ Rectangle Locked │ ▼ Effect Applied │ ▼ Idle

Gesture Closed Fist:

Closed Fist │ ▼ Delete Last Rectangle │ ▼ Render Ulang

Fitur Tambahan

  • Border rectangle memiliki warna berbeda sesuai efek.
  • Nama efek ditampilkan di sudut rectangle (Blur, Pixel, Cartoon, Edge).
  • Maksimal 10 rectangle aktif untuk menjaga performa.
  • Tombol keyboard:
    • R → Hapus semua rectangle.
    • S → Simpan screenshot.
    • Q → Keluar aplikasi.
  • Animasi singkat saat rectangle berhasil terkunci agar interaksi terasa lebih hidup.

Instalasi

  1. Clone repository ini
  2. Install dependensi:
    pip install -r requirements.txt
    
  3. Jalankan aplikasi:
    python main.py
    

Penggunaan

  • Pastikan webcam terhubung dan bekerja.
  • Jadikan kedua tangan menghadap kamera.
  • Lakukan pinch (ujung ibu jari dan jeli telunjuk menyentuh) dengan kedua tangan sekaligus untuk mulai membuat rectangle.
  • Gerakkan tangan untuk mengubah ukuran rectangle.
  • Lepaskan pinch untuk mengunci rectangle dan menerapkan efek.
  • Untuk menghapus rectangle terakhir, buat kepalan tangan (closed fist) dengan salah satu tangan.
  • Tekan 'R' untuk menghapus semua rectangle.
  • Tekan 'S' untuk menyimpan screenshot.
  • Tekan 'Q' untuk keluar.

Catatan

  • Aplikasi ini menggunakan MediaPipe Hands untuk deteksi tangan, sehingga kinerja mungkin tergantung pada hardware.
  • Untuk hasil terbaik, pastikan pencahayaan adekuat dan background tidak terlalu ramai.

About

No description, website, or topics provided.

Resources

License

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages