|
|
|
|
|
|
|
|
|
|
|
from utils import distance_between_points, is_finger_extended |
|
|
|
|
|
def fist_closed(landmarks): |
|
|
|
|
|
return all(not is_finger_extended(landmarks, finger=f) for f in ["thumb","index","middle","ring","pinky"]) |
|
|
|
|
|
def palm_open(landmarks): |
|
|
|
|
|
return all(is_finger_extended(landmarks, finger=f) for f in ["thumb","index","middle","ring","pinky"]) |
|
|
|
|
|
def index_pointing_up(landmarks): |
|
|
|
|
|
return is_finger_extended(landmarks, "index", "up") and all(not is_finger_extended(landmarks,f) for f in ["thumb","middle","ring","pinky"]) |
|
|
|
|
|
def v_sign(landmarks): |
|
|
|
|
|
return is_finger_extended(landmarks, "index") and is_finger_extended(landmarks, "middle") and all(not is_finger_extended(landmarks,f) for f in ["thumb","ring","pinky"]) |
|
|
|
|
|
def thumb_up(landmarks): |
|
|
|
|
|
return is_finger_extended(landmarks,"thumb","up") and all(not is_finger_extended(landmarks,f) for f in ["index","middle","ring","pinky"]) |
|
|
|
|
|
def thumb_side(landmarks): |
|
|
|
|
|
return is_finger_extended(landmarks,"thumb") and all(not is_finger_extended(landmarks,f) for f in ["index","middle","ring","pinky"]) |
|
|
|
|
|
def pinky_up(landmarks): |
|
|
|
|
|
return is_finger_extended(landmarks,"pinky","up") and all(not is_finger_extended(landmarks,f) for f in ["thumb","index","middle","ring"]) |
|
|
|
|
|
def four_fingers(landmarks): |
|
|
|
|
|
return all(is_finger_extended(landmarks,f) for f in ["index","middle","ring","pinky"]) and not is_finger_extended(landmarks,"thumb") |
|
|
|
|
|
def ok_sign(landmarks): |
|
|
|
|
|
thumb_tip = landmarks[4] |
|
|
index_tip = landmarks[8] |
|
|
return distance_between_points(thumb_tip,index_tip) < 0.05 and all(is_finger_extended(landmarks,f) for f in ["middle","ring","pinky"]) |
|
|
|
|
|
def palm_inward(landmarks): |
|
|
|
|
|
wrist = landmarks[0] |
|
|
mcp = landmarks[9] |
|
|
vector_y = mcp[1] - wrist[1] |
|
|
return vector_y > 0 |
|
|
|