Kamera retro berbasis gestur tangan. Bentuk huruf "L" dengan kedua tangan, tarik untuk membuka bingkai, dan RetroLens akan meluruskan area di dalam bingkai (perspective warp), menerapkan filter retro, lalu menyimpannya otomatis setelah tangan diam beberapa detik. Tersedia juga mode menggambar di udara menggunakan ujung telunjuk.
- Deteksi tangan real-time (MediaPipe Hand Landmarker, hingga 2 tangan)
- Bingkai "L" dua tangan sebagai viewfinder dengan penghalusan gerakan
- Perspective warp otomatis (scanner) pada area di dalam bingkai
- 7 lensa filter: MONO, KONTRAS, FILM, GARIS, AMBANG, DITHER, NEGATIF
- Auto-capture setelah tangan diam, lengkap dengan hitung mundur & progress bar
- HUD retro: chromatic aberration, scanline, vignette, indikator ROLL/PITCH/YAW
- Mode GAMBAR: menggambar di udara dengan 4 warna pena dan efek glow
- Perpindahan mode melalui gestur tahan (menunjuk / telapak terbuka)
- Camera stream threaded agar frame selalu terbaru (mendukung IP camera)
- Python 3.9+
- Webcam, atau aplikasi IP camera di HP (mis. IP Webcam / DroidCam / Iriun)
- Berkas model
assets/hand_landmarker.task
git clone <url-repo-anda>
cd RetroLens
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txtUnduh model MediaPipe dan letakkan di folder assets/:
curl -L -o assets/hand_landmarker.task \
https://storage.googleapis.com/mediapipe-models/hand_landmarker/hand_landmarker/float16/1/hand_landmarker.taskAtur sumber video pada core/config.py:
SUMBER = "http://192.168.1.11:8080/video" # IP camera
# SUMBER = 0 # webcam lokalJalankan aplikasi:
python app.pyAlur singkat:
- Bentuk huruf "L" dengan kedua tangan, satukan, lalu tarik untuk membuka bingkai.
- Tahan tangan diam selama 3 detik — foto tersimpan otomatis ke folder
foto/. - Untuk masuk mode GAMBAR: tunjuk dengan jempol ditekuk dan tahan 2 detik.
- Untuk kembali ke mode LENSA: buka telapak tangan dan tahan 2 detik.
| Tombol | Fungsi |
|---|---|
SPACE |
Ganti lensa filter berikutnya |
M |
Beralih antara mode LENSA dan GAMBAR |
C |
Bersihkan kanvas gambar |
P |
Ganti warna pena |
S |
Simpan tangkapan layar manual |
D |
Tampilkan / sembunyikan info debug |
Q |
Keluar dari aplikasi |
| Gestur | Mode | Fungsi |
|---|---|---|
| Dua tangan "L" | LENSA | Membentuk bingkai foto |
| Menunjuk (jempol ditekuk), tahan | LENSA | Masuk mode GAMBAR |
| Telunjuk menunjuk | GAMBAR | Menggambar |
| Peace | GAMBAR | Pindah tanpa menggambar |
| Kepalan | GAMBAR | Hapus kanvas |
| Telapak terbuka, tahan | GAMBAR | Kembali ke mode LENSA |
RetroLens/
├── app.py # entry point & loop aplikasi
├── requirements.txt
├── README.md
├── LICENSE
├── .gitignore
├── assets/
│ └── hand_landmarker.task
├── core/
│ ├── config.py # seluruh konstanta & AppConfig
│ ├── camera.py # KameraStream (threaded capture)
│ ├── detector.py # pembungkus MediaPipe HandLandmarker
│ ├── gesture.py # pengenalan gestur
│ ├── filters.py # grading retro + registry lensa
│ ├── scanner.py # perspective warp & komposit
│ ├── drawing.py # HUD primitif + kanvas mode gambar
│ └── utils.py # geometri & helper penyimpanan
├── screenshots/
└── docs/
Letakkan tangkapan layar pada folder screenshots/, lalu tautkan di sini:

- OCR pada hasil scan (Tesseract / PaddleOCR)
- Ekspor PDF multi-halaman
- AI auto crop untuk deteksi dokumen tanpa gestur
- Filter kamera tambahan melalui
daftarkan_lensa() - Sistem plugin untuk lensa dan gestur pihak ketiga