mediapipe-gesture-detector

Mar 31, 2026

Explorasi python pertama saya dalam mempelajari pemrosesan gambar dan gesture, melalui input kamera deteksi gesture dan gerakan secara langsung melalui opencv pada python lalu gerakan yang diproses melalui mediapipe untuk membaca gerakan tangan dan perubahannya secara langsung.

Untuk membaca dan mengenali gerakan tangan secara lebih spesifik, saya memanfaatkan mediapipe, sebagai library pendukung. MediaPipe memungkinkan sistem mendeteksi titik-titik penting pada tangan (hand landmarks) sehingga perubahan posisi dan bentuk gesture dapat diproses secara langsung. Dengan menggabungkan OpenCV sebagai pengolah citra dan MediaPipe sebagai pendeteksi gesture, aplikasi sederhana ini mampu mengenali gerakan tangan secara real-time melalui kamera.

Proyek ini berjalan di dalam virtual envrioment pyhton untuk mengelola (library/dependencies) opencv & mediapipe, secara singkat venv itu adalah lingkungan Python terisolasi yang digunakan untuk mengelola library dan dependencies secara terpisah dari sistem Python utama. Dengan menggunakan virtual environment, setiap proyek dapat memiliki versi library yang berbeda tanpa saling memengaruhi. Misalnya, satu proyek dapat menggunakan OpenCV versi tertentu, sementara proyek lain menggunakan versi yang berbeda, tanpa menimbulkan konflik pada sistem.

Penjelasan sederhananya:

Mendeteksi Kamera yang Tersedia

Program ini tidak langsung menggunakan kamera utama, tetapi terlebih dahulu memeriksa kamera apa saja yang tersedia.

def list_cameras():
    index = 0
    arr = []
    while True:
        cap = cv2.VideoCapture(index)
        if not cap.read()[0]:
            break
        else:
            arr.append(index)
        cap.release()
        index += 1
    return arr

Fungsi dari kode di atas adalah untuk melakukan tugas yang bisa dipanggil kapan saja dengan nama “list_cameras”, yang di dalamnya terdapat “while” untuk membuat perulangan selama kondisi masih terpenuhi(True) selanjutnya

return arr

akan mengembalikan nilai yang berisi daftar indeks kamera yang tersedia.

Inisialisasi Mediapipe Hands

Setelah kamera tersedia, langkah berikutnya adalah menyiapkan modul hand tracking dari Mediapipe.

mp_hands = mp.solutions.hands
hands = mp_hands.Hands()
mp_draw = mp.solutions.drawing_utils

singkatnya

Mengenali Gestur Tangan

Setelah landmark tangan diperoleh, program akan mencoba mengenali bentuk gestur yang dilakukan.

def recognize_gesture(hand_landmarks):

Fungsi ini menerima parameter hand_landmarks yaitu kumpulan titik-titik posisi tangan yang diberikan oleh Mediapipe.

Kemudian kita mengambil posisi ujung jari:

thumb_tip = hand_landmarks.landmark[mp_hands.HandLandmark.THUMB_TIP]
index_finger_tip = hand_landmarks.landmark[mp_hands.HandLandmark.INDEX_FINGER_TIP]
middle_finger_tip = hand_landmarks.landmark[mp_hands.HandLandmark.MIDDLE_FINGER_TIP]
ring_finger_tip = hand_landmarks.landmark[mp_hands.HandLandmark.RING_FINGER_TIP]
pinky_tip = hand_landmarks.landmark[mp_hands.HandLandmark.PINKY_TIP]

Di sini terdapat sintaks penting:

. (dot notation)

Digunakan untuk mengakses atribut atau properti dari sebuah objek.

Contoh:

hand_landmarks.landmark

Artinya kita mengambil daftar landmark dari objek hand_landmarks.

Eksperimen kecil ini cukup menarik karena memperlihatkan bagaimana computer vision dapat membaca gerakan manusia secara langsung melalui kamera. Akan sangat panjang, membosankan dan terlihat sulit jika saya menulis untuk menjelaskan semua sintaks yang saya gunakan untuk mempelajari gesture detector, jadi disini saya jelaskan beberapa garis besarnya saja:p.

Dengan bantuan library seperti OpenCV dan Mediapipe, proses yang cukup kompleks seperti hand tracking bisa dilakukan hanya dengan beberapa baris kode python.

Saya merilis kode penuh di repository github saya gesture-detector, jadi teman-teman pembaca bisa melakukan eksplorasi dan praktik secara langsung disana.