from math import sqrt def calculate_distance(ax, ay, bx, by): distance = sqrt(((bx - ax) ** 2 + (by - ay) ** 2)) return distance def check_index_finger(hand_landmarks): ax = hand_landmarks.landmark[8].x ay = hand_landmarks.landmark[8].y bx = hand_landmarks.landmark[5].x by = hand_landmarks.landmark[5].y distance_8_5 = calculate_distance(ax, ay, bx, by) ax = hand_landmarks.landmark[5].x ay = hand_landmarks.landmark[5].y bx = hand_landmarks.landmark[0].x by = hand_landmarks.landmark[0].y distance_5_0 = calculate_distance(ax, ay, bx, by) if (distance_5_0 < distance_8_5 + 0.1): result = "wskazujacy_wyprostowany" else: result = "wskazujacy_niewyprostowany" return (result, hand_landmarks.landmark[8].x, hand_landmarks.landmark[8].y) def check_middle_finger(hand_landmarks): ax = hand_landmarks.landmark[12].x ay = hand_landmarks.landmark[12].y bx = hand_landmarks.landmark[9].x by = hand_landmarks.landmark[9].y distance_12_9 = calculate_distance(ax, ay, bx, by) ax = hand_landmarks.landmark[9].x ay = hand_landmarks.landmark[9].y bx = hand_landmarks.landmark[0].x by = hand_landmarks.landmark[0].y distance_9_0 = calculate_distance(ax, ay, bx, by) if (distance_9_0 < distance_12_9 + 0.1): result = "srodkowy_wyprostowany" else: result = "srodkowy_niewyprostowany" return (result, hand_landmarks.landmark[12].x, hand_landmarks.landmark[12].y) def check_ring_finger(hand_landmarks): ax = hand_landmarks.landmark[16].x ay = hand_landmarks.landmark[16].y bx = hand_landmarks.landmark[13].x by = hand_landmarks.landmark[13].y distance_16_13 = calculate_distance(ax, ay, bx, by) ax = hand_landmarks.landmark[13].x ay = hand_landmarks.landmark[13].y bx = hand_landmarks.landmark[0].x by = hand_landmarks.landmark[0].y distance_13_0 = calculate_distance(ax, ay, bx, by) if (distance_13_0 < distance_16_13 + 0.1): result = "serdeczny_wyprostowany" else: result = "serdeczny_niewyprostowany" return (result, hand_landmarks.landmark[16].x, hand_landmarks.landmark[16].y) def check_pinky_finger(hand_landmarks): ax = hand_landmarks.landmark[20].x ay = hand_landmarks.landmark[20].y bx = hand_landmarks.landmark[17].x by = hand_landmarks.landmark[17].y distance_20_17 = calculate_distance(ax, ay, bx, by) ax = hand_landmarks.landmark[17].x ay = hand_landmarks.landmark[17].y bx = hand_landmarks.landmark[0].x by = hand_landmarks.landmark[0].y distance_17_0 = calculate_distance(ax, ay, bx, by) if (distance_17_0 < distance_20_17 + 0.1): result = "maly_wyprostowany" else: result = "maly_niewyprostowany" return (result, hand_landmarks.landmark[20].x, hand_landmarks.landmark[20].y)