саранча и бойлед

2 подписчика

18+
18+

1 просмотр

5 дней назад

ПожаловатьсяНарушение авторских прав

2 подписчика

18+
18+

1 просмотр

5 дней назад

ПожаловатьсяНарушение авторских прав
18+
18+

1 просмотр

5 дней назад

import cv2 import mediapipe as mp from mediapipe.tasks import python from mediapipe.tasks.python import vision # Инициализация детектора рук (новый API) model_path = None # Использует встроенную модель hand_landmarker = vision.HandLandmarker.create_from_options( vision.HandLandmarkerOptions( base_options=python.BaseOptions(model_asset_path='hand_landmarker.task'), running_mode=vision.RunningMode.IMAGE, num_hands=2, min_hand_detection_confidence=0.5, min_hand_presence_confidence=0.5, min_tracking_confidence=0.5 ) ) cap = cv2.VideoCapture(0) while True: success, frame = cap.read() if not success: break frame = cv2.flip(frame, 1) rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) # Конвертируем кадр для MediaPipe mp_image = mp.Image(image_format=mp.ImageFormat.SRGB, data=rgb) # Распознавание рук detection_result = hand_landmarker.detect(mp_image) # Рисуем руки на кадре if detection_result.hand_landmarks: for hand_landmarks in detection_result.hand_landmarks: for landmark in hand_landmarks: # Преобразуем координаты в пиксели x = int(landmark.x * frame.shape[1]) y = int(landmark.y * frame.shape[0]) cv2.circle(frame, (x, y), 2, (0, 0, 255), -1) # Красные точки # Соединяем их линиями (упрощённо) for connection in vision.HandLandmarker.HAND_CONNECTIONS: start = hand_landmarks[connection[0]] end = hand_landmarks[connection[1]] start_point = (int(start.x * frame.shape[1]), int(start.y * frame.shape[0])) end_point = (int(end.x * frame.shape[1]), int(end.y * frame.shape[0])) cv2.line(frame, start_point, end_point, (0, 255, 0), 2) # Зелёные линии cv2.imshow("Распознавание рук", frame) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows()