Files
detecttracking/hands/hand_inference_origin.py
2024-05-20 20:01:06 +08:00

44 lines
1.4 KiB
Python

import cv2
import os
import mediapipe as mp
class hand_pose:
def __init__(self, min_dc=0.45, min_tc=0.45, max_nh=1):
self.mp_drawing = mp.solutions.drawing_utils
self.mp_hands = mp.solutions.hands
self.hands = self.mp_hands.Hands(
static_image_mode=False,
max_num_hands=max_nh,
min_detection_confidence=min_dc,
min_tracking_confidence=min_tc
)
@staticmethod
def img_show(img):
cv2.imshow('MediaPipe Hands', img)
cv2.waitKey(1)
def draw(self, img):
hand_local = []
h_re = self.hands.process(img)
if h_re.multi_hand_landmarks:
for hand_landmarks in h_re.multi_hand_landmarks:
self.mp_drawing.draw_landmarks(img,
hand_landmarks,
self.mp_hands.HAND_CONNECTIONS)
self.img_show(img)
'''获取手部关键点坐标'''
for i in range(21):
x = hand_landmarks.landmark[i].x * img.shape[1]
y = hand_landmarks.landmark[i].y * img.shape[0]
hand_local.append((x, y))
return hand_local
if __name__ == "__main__":
handpose = hand_pose()
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
handpose.draw(frame)