Extract Pose
Turn a Reference Drawing Into Keypoints
- image
- pose_keypoint
- pose
- skeleton_preview
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:
- pose_keypoint (optional input) - if you wire in a
POSE_KEYPOINTfrom aDWPreprocessornode (comfyui_controlnet_aux), it parses those directly. This is the best path: DWPose's detector is far more robust than anything bundled. - 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.
- 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_KEYPOINTfromDWPreprocessorgives 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_previewcomes back empty, you're running without DWPose keypoints and without MediaPipe. Install one of them; the node won't pretend. - Wire
DWPreprocessor→pose_keypointrather 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_PoseTransferPrepacceptspose_keypointanddwpose_imagedirectly. 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.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| pose_keypointopt | POSE_KEYPOINT | — | |
| nameopt | STRING | extracted | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| pose | POSE | — |
| skeleton_preview | IMAGE | — |