【问题标题】:Mediapipe Hands landmark extractionMediapipe Hands 地标提取
【发布时间】:2022-07-07 08:17:03
【问题描述】:

我的目标是从媒体管道中为每只手提取手部地标,以训练 LSTM 网络并识别不同的动作。

使用整体解决方案,这很容易,因为左手或右手的所有地标都可以通过相应的函数检索。

def extract_keypoints(results):
    lh = np.array([[res.x, res.y, res.z] for res in results.left_hand_landmarks.landmark]).flatten() if results.left_hand_landmarks else np.zeros(21*3)
    rh = np.array([[res.x, res.y, res.z] for res in results.right_hand_landmarks.landmark]).flatten() if results.right_hand_landmarks else np.zeros(21*3)
    return np.concatenate([ lh, rh])

但是,从自我视角和整体解决方案拍摄时,我遇到了手部检测问题。所以我必须切换到 mediapipe 手解决方案。 对于 mediapipe 手,只有 MULTI_HAND_LANDMARKS 函数,它只给我一只手的地标。

if results.multi_hand_landmarks:
            print(results.multi_handedness)
            for hand_landmarks in results.multi_hand_landmarks:
                print('hand_landmarks:', hand_landmarks)
            for hand_landmarks in results.multi_hand_landmarks:
                mp_drawing.draw_landmarks(image,hand_landmarks,mp_hands.HAND_CONNECTIONS,mp_drawing_styles.get_default_hand_landmarks_style(),mp_drawing_styles.get_default_hand_connections_style())

结果我得到了这样的结果,每只手总共 21 个地标只多 20 次。

hand_landmarks: landmark { x: 0.8579444885253906 y: 0.904037356376648 z: 2.08246397903622e-09 }

如果图片中有两只手,手地标输出是否总是在一只手和另一只手之间交替?

【问题讨论】:

    标签: python lstm feature-extraction gesture-recognition mediapipe


    【解决方案1】:

    当您初始化Hands 时,您必须设置max_num_hands=2,如下所示:

    with mp_hands.Hands(
            max_num_hands=2,
            model_complexity=1,
            min_detection_confidence=0.5,
            min_tracking_confidence=0.5) as hands:
    

    然后results.multi_hand_landmarks 是一个包含两个元素的列表,其中每个元素都包含一只手的地标

    【讨论】:

      猜你喜欢
      • 2021-08-24
      • 2023-01-17
      • 2021-11-09
      • 2021-07-12
      • 2022-06-29
      • 2022-11-22
      • 2020-11-18
      • 2021-07-30
      • 2021-08-10
      相关资源
      最近更新 更多