Nodes/comfyui_cv/CV MediaPipe Hand Pose
ComfyUI Node

CV MediaPipe Hand Pose

Regresses the 21 hand keypoints per palm with the MediaPipe hand-pose model (cv2.dnn). Stage 2 of hand-pose estimation: feed the 'palms' output of 'CV MediaPipe Palm Detect' plus the same image. Place handpose_estimation_mediapipe_2023feb_int8bq.onnx in ComfyUI/models/onnx and pick it. Outputs are DATA only - draw the hand boxes with the core 'Draw BBoxes' node and the 21 keypoints with 'CV Draw Points'. A palm whose confidence is below conf_threshold is dropped; zero hands is a valid result (empty outputs). Processes a single image (the first frame of a batch).

By bmad4ever·Created 3 months ago·Updated 2 days ago· 0
CV MediaPipe Hand Pose
  • image
  • palms
  • bboxes
  • landmarks
  • world_landmarks
  • handedness
  • scores
  • hand_count
  • connections
  • keypoint_names
model
conf_threshold0.90
Categoryimage/CV/dnn

Inputs (4)

NameTypeDefaultDescription
imageNPARRAY,IMAGEThe SAME image the palms were detected on. An IMAGE batch uses its first frame; an NPARRAY is treated as one frame. Accepts a ComfyUI IMAGE/MASK directly (frame 0 of a batch) or an NPARRAY. Arithmetic ops (add, multiply, etc.) process the full IMAGE batch when both inputs have the same batch size.
palmsNPARRAYThe (N, 19) 'palms' array from 'CV MediaPipe Palm Detect'. Each row seeds one hand's crop/rotation.
modelCOMBOMediaPipe hand-pose .onnx model from ComfyUI/models/onnx (handpose_estimation_mediapipe_2023feb_int8bq.onnx).
conf_thresholdFLOAT0.900–1Minimum model confidence to keep a hand. Palms below this are dropped (not an error).

Outputs (8)

NameTypeDescription
bboxesBOUNDING_BOXOne {x, y, width, height, score} dict per hand (the tight hand box) - feed the core 'Draw BBoxes' node.
landmarksNPARRAY(N*21, 2) float32 screen keypoints of every hand, in MediaPipe order (wrist, thumb..pinky). Feed 'CV Draw Points'. Empty (0, 2) when no hands.
world_landmarksNPARRAY(N*21, 3) float32 metric 3D keypoints (x, y, z in meters, origin at the hand centre). For inspection / 3D use.
handednessNPARRAY(N,) float32 in [0, 1]: <=0.5 is a left hand, >0.5 right, same order as bboxes.
scoresNPARRAY(N,) float32 confidence per hand, same order as bboxes.
hand_countINTNumber of hands kept (palms that passed conf_threshold).
connectionsNPARRAY(N*21, 2) int32 edge index-pairs (the MediaPipe hand skeleton), already offset per hand to index the 'landmarks' output directly. Feed 'landmarks' + this into 'CV Draw Connections' to draw the bones. Empty (0, 2) when no hands.
keypoint_namesNPARRAY(N*21,) string array naming every keypoint (wrist, thumb_tip, ...), aligned row-for-row with 'landmarks'. Feed 'landmarks' + this into 'CV Draw Labels' to annotate them. Empty (0,) when no hands.