mirror of
https://github.com/guezoloic/BakersAdventure.git
synced 2026-03-28 18:03:43 +00:00
60 lines
2.3 KiB
Python
Executable File
60 lines
2.3 KiB
Python
Executable File
import cv2
|
|
import mediapipe as mp
|
|
from cvzone.HandTrackingModule import HandDetector
|
|
|
|
mp_drawing = mp.solutions.drawing_utils
|
|
mp_drawing_styles = mp.solutions.drawing_styles #initialisation des modules
|
|
mp_hands = mp.solutions.hands
|
|
|
|
|
|
class HandTracking:
|
|
def __init__(self):
|
|
self.hand_tracking = mp_hands.Hands(min_detection_confidence=0.5, min_tracking_confidence=0.5)
|
|
# self.detector = HandDetector(detectionCon=0.8, maxHands=1)
|
|
self.cap = cv2.VideoCapture(0)
|
|
|
|
self.hand_x = 0
|
|
self.hand_y = 0 #coordonnées
|
|
self.axis_x = 0
|
|
self.axis_y = 0
|
|
|
|
self.results = None
|
|
self.hand_closed = False
|
|
|
|
|
|
def scan_hands(self):
|
|
_, self.frame = self.cap.read() #initialiser la cam
|
|
self.frame.shape
|
|
self.frame = cv2.cvtColor(cv2.flip(self.frame, 1), cv2.COLOR_BGR2RGB) #mettre un filtre
|
|
self.frame.flags.writeable = False
|
|
|
|
self.results = self.hand_tracking.process(self.frame)
|
|
|
|
#mettre le filtre sur la cam
|
|
self.frame.flags.writeable = True
|
|
self.frame = cv2.cvtColor(self.frame, cv2.COLOR_RGB2BGR)
|
|
|
|
self.hand_closed = False
|
|
|
|
if self.results.multi_hand_landmarks:
|
|
for hand_landmarks in self.results.multi_hand_landmarks:
|
|
x, y = hand_landmarks.landmark[9].x, hand_landmarks.landmark[9].y
|
|
|
|
self.hand_x = int(x * self.axis_x)
|
|
self.hand_y = int(y * self.axis_y) #pour chaque point de la main
|
|
|
|
y_close = hand_landmarks.landmark[12].y
|
|
|
|
if y < y_close and y < hand_landmarks.landmark[0].y: #fermer la main
|
|
self.hand_closed = True
|
|
|
|
mp_drawing.draw_landmarks(
|
|
self.frame,
|
|
hand_landmarks,
|
|
mp_hands.HAND_CONNECTIONS, #optimisation
|
|
mp_drawing_styles.get_default_hand_landmarks_style(),
|
|
mp_drawing_styles.get_default_hand_connections_style()
|
|
)
|
|
cv2.imshow("Camera Baker Adventure", self.frame) #afficher la caméra
|
|
|
|
hand_tracking = HandTracking() |