ComfyUI Node

Extract Pose

Turn a Reference Drawing Into Keypoints

By Spit8·Created 2 months ago·Updated 2 months ago· 1
Extract Pose
  • image
  • pose_keypoint
  • pose
  • skeleton_preview
nameextracted

The whole CharacterPose system speaks one language: 18 COCO-18 keypoints. When you want to convert a drawing into that language - take a reference image of a character in a specific stance and turn it into a POSE object - CP_ExtractPose is the translator.

You'll mostly want this for the source side of a pose transfer: you have a sprite standing in some pose, and you need its keypoints so the pipeline knows where the character's limbs currently are, before it moves them somewhere new.

How it works

It tries three sources of keypoints, in order:

  1. pose_keypoint (optional input) - if you wire in a POSE_KEYPOINT from a DWPreprocessor node (comfyui_controlnet_aux), it parses those directly. This is the best path: DWPose's detector is far more robust than anything bundled.
  2. MediaPipe Pose - if no keypoint input is given, it falls back to Google's MediaPipe pose estimator (optional dependency, Apache 2.0) and maps its landmarks to the COCO-18 layout.
  3. Nothing - if both are unavailable, it returns blank keypoints. Deliberately. The source comments say it plainly: no fake T-pose placeholder. An empty skeleton you can see is better than a fake pose you'll build a pipeline on by mistake.

Then it produces the POSE object and a preview image so you can immediately see what was detected.

The inputs that matter

  • image - the reference drawing.
  • pose_keypoint - optional, and you want it: a POSE_KEYPOINT from DWPreprocessor gives dramatically better extraction than the MediaPipe fallback.
  • name - just a label for the pose (default extracted).

Outputs: pose (the POSE object) and skeleton_preview (an IMAGE of the detected sticks, so you can sanity-check the detection without extra nodes).

Installing

Same pack as always:

cd ComfyUI/custom_nodes
git clone https://github.com/Spit8/_ComfyUI_CharacterPose
pip install -r _ComfyUI_CharacterPose/requirements.txt

For good extraction you want the DWPose path: install comfyui_controlnet_aux and drop its ONNX weights where that pack expects them (custom_nodes/comfyui_controlnet_aux/ckpts/yzd-v/DWPose/ with yolox_l.onnx and dw-ll_ucoco_384.onnx) - not in models/. MediaPipe works as a fallback but is optional and weaker.

Gotchas

  • Blank pose = missing dependencies. If skeleton_preview comes back empty, you're running without DWPose keypoints and without MediaPipe. Install one of them; the node won't pretend.
  • Wire DWPreprocessorpose_keypoint rather than feeding a drawn skeleton image. The node wants keypoints, not pixels.
  • In the recommended workflow you often don't need this node at all - CP_PoseTransferPrep accepts pose_keypoint and dwpose_image directly. Extract Pose is the standalone version for when you're building a pose pipeline by hand.

Get keypoints in, get a POSE out, see what you got. That's the whole loop, and it's the honest foundation everything else sits on.

CategoryCharacterPose/Pose

Inputs (3)

NameTypeDefaultDescription
imageIMAGE
pose_keypointoptPOSE_KEYPOINT
nameoptSTRINGextracted

Outputs (2)

NameTypeDescription
posePOSE
skeleton_previewIMAGE