DWpose Keypoint Printer
Re-render saved poses without re-running detection
- keypoints
- image
- custom_options
- pose_image
- input_keypoint_info
The keypoint data is the expensive part. Once you've run a video through pose detection and saved the keypoints output, re-running the whole detector just to get a picture of the skeleton is a waste of time. This node renders pose skeletons directly from POSE_KEYPOINT data - no detection, no models, no TensorRT - so you can preview, debug, or regenerate the pose frames cheaply, as many times as you like.
Think of it as the render half of the main DWposeDeluxeNode split off into its own node. The main estimator does detect-then-render; this one just does render. Feed it saved keypoints from LoadPoseKeypoints, or the keypoints output of any detector, and it draws the stick figure onto a black canvas.
The inputs
The keypoints input is required. Everything else is optional and mostly mirrors the estimator's rendering controls:
image- an optional background image. Combined withbackground, this is how you get a pose overlaying an actual frame without running detection again.background-none,scale, orcrop/pad. This decides how the background image is fitted to the keypoint canvas when you supply one.brightness- dim or boost the background so the skeleton stays readable.poses_to_print- max number of poses to render, ranked by size. Handy when a frame has several people and you only care about the biggest.show_body/show_feet/show_face/show_hands- the same per-subset visibility toggles as the estimator. Feet included, which the pack is proud of.custom_options- hook up a CustomOptions node to restyle dot sizes and line thickness at render time.
Outputs
The main output is pose_image, an IMAGE tensor you can preview, save, or feed into a ControlNet. There's also input_keypoint_info, a STRING that summarizes the incoming keypoint data (frame count, people, format) - genuinely useful for debugging why a render looks wrong, since you can dump it into a text viewer.
One nice workflow: run detection once on a video, save the keypoints, then try three different skeleton styles (thick lines, thin lines, feet off) by re-rendering with different custom_options - without touching the detector. The rendering is instant, the detection wasn't.
Installing it
Part of the DWposeDeluxe pack:
cd ComfyUI/custom_nodes/
git clone https://github.com/hobinrude/ComfyUI_DWposeDeluxe
cd ComfyUI_DWposeDeluxe
pip install -r requirements.txt
or search DWposeDeluxe in ComfyUI Manager. Since this node doesn't run inference, it doesn't even need the ONNX models on hand - those are only downloaded by the estimator. If you feed it empty or malformed keypoint data it returns a blank 64×64 image and a warning string rather than crashing, which is a small mercy. Check the console if you get a silent blank canvas; the pack logs warnings there instead of throwing errors in the UI.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| keypoints | POSE_KEYPOINT | — | |
| imageopt | IMAGE | — | |
| poses_to_printopt | INT | 11–100 | — |
| backgroundopt | COMBO | none | 3 options: none, scale, crop/pad |
| brightnessopt | FLOAT | 0.500–1 | — |
| custom_optionsopt | DWOPOSE_CUSTOM_OPTIONS | — | |
| show_bodyopt | BOOLEAN | true | — |
| show_feetopt | BOOLEAN | true | — |
| show_faceopt | BOOLEAN | true | — |
| show_handsopt | BOOLEAN | true | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| pose_image | IMAGE | — |
| input_keypoint_info | STRING | — |