From 1bbade48848174a5caebe1c7d157306df2f667b3 Mon Sep 17 00:00:00 2001 From: Michal Maciaszek Date: Tue, 29 Dec 2020 21:42:16 +0100 Subject: [PATCH] recognize finger straight --- ...gle_solution.py => gesture_recognition.py} | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) rename gestures/{google_solution.py => gesture_recognition.py} (50%) diff --git a/gestures/google_solution.py b/gestures/gesture_recognition.py similarity index 50% rename from gestures/google_solution.py rename to gestures/gesture_recognition.py index 75fa9dd..8ad8ff5 100644 --- a/gestures/google_solution.py +++ b/gestures/gesture_recognition.py @@ -2,6 +2,13 @@ import cv2 import mediapipe as mp mp_drawing = mp.solutions.drawing_utils mp_hands = mp.solutions.hands +from math import sqrt + +def calculate_distance(ax, ay, bx,by): + distance = sqrt(((bx - ax) ** 2 + (by - ay) ** 2)) + return distance + + hands = mp_hands.Hands( min_detection_confidence=0.5, min_tracking_confidence=0.5) @@ -18,7 +25,7 @@ while cap.isOpened(): results = hands.process(image) - # Draw the hand annotations on the image. + # Draw the hand annotations on the image.g image.flags.writeable = True image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR) if results.multi_hand_landmarks: @@ -26,6 +33,30 @@ while cap.isOpened(): mp_drawing.draw_landmarks( image, hand_landmarks, mp_hands.HAND_CONNECTIONS) #print(hand_landmarks) ## spĆ³jrz na to + if cv2.waitKey(33) == ord('s'): + if results.multi_hand_landmarks: + i = 0 + for hand_landmarks in results.multi_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 + odleglosc_8_5 = calculate_distance(ax,ay, bx, by) + print(odleglosc_8_5) + ax = hand_landmarks.landmark[5].x + ay = hand_landmarks.landmark[5].y + bx = hand_landmarks.landmark[0].x + by = hand_landmarks.landmark[0].y + odleglosc_5_0 = calculate_distance(ax, ay, bx, by) + print(odleglosc_5_0) + if(odleglosc_5_0 < odleglosc_8_5 + 0.1): + print("wyprostowany") + else: + print("niewyprostowany") + + + # i += 1 + # print(hand_landmarks.) cv2.imshow('MediaPipe Hands', image) if cv2.waitKey(5) & 0xFF == 27: