比大拇指
特征:
- 拇指伸展,其指尖远离手掌。
- 其余四指弯曲或靠近手掌。
算法:
- 计算拇指指尖(T4)与手腕(Wrist)之间的距离。
- 确保这个距离大于一个阈值。
- 同时确保其余四指(I4、M4、R4、P4)的指尖与手腕的距离小于一个阈值。
def is_thumbs_up(hand_landmarks, wrist_idx=0, thumb_tip_idx=4, threshold_thumb=100, threshold_fingers=50):
wrist = hand_landmarks[wrist_idx]
thumb_tip = hand_landmarks[thumb_tip_idx]
distance_thumb = np.linalg.norm(np.array(thumb_tip) - np.array(wrist))
if distance_thumb < threshold_thumb:
return False
is_thumbs_up = True
for i in [8, 12, 16, 20]: # Index, Middle, Ring, Pinky finger tips
fingertip = hand_landmarks[i]
distance = np.linalg.norm(np.array(fingertip) - np.array(wrist))
if distance > threshold_fingers:
is_thumbs_up = False
break
return is_thumbs_up