【发布时间】: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