import cv2
import mediapipe as mp

mp_hands = mp.solutions.hands
hands = mp_hands.Hands(max_num_hands=1)
mp_draw = mp.solutions.drawing_utils

def detect_gesture(frame):
    rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
    result = hands.process(rgb_frame)
    
    if result.multi_hand_landmarks:
        for hand_landmarks in result.multi_hand_landmarks:
            lm_list= []
            for id, lm in enumerate(hand_landmarks.landmark):
                h,w,c = frame.shape
                lm_list.append((int(lm.x *w), int(lm.y * h)))
                
            fingers_up = 0
            tip_ids = [4,8,12,16,20]
            
            if lm_list[tip_ids[0]][0] > lm_list[tip_ids[0]-1][0]:
                fingers_up += 1
                
            for i in range(1,5):
                if lm_list[tip_ids[i]][1] < lm_list[tip_ids[i]-2][1]:
                    fingers_up += 1
                    
            return f"{fingers_up}_fingers"
    return None
