Nodes/ComfyUI_DWposeDeluxe/DWpose Keypoint Printer
ComfyUI Node

DWpose Keypoint Printer

Re-render saved poses without re-running detection

By hobinrude·Created 9 months ago·Updated 8 months ago· 11
DWpose Keypoint Printer
  • keypoints
  • image
  • custom_options
  • pose_image
  • input_keypoint_info
poses_to_print1
backgroundnone
brightness0.50
show_bodytrue
show_feettrue
show_facetrue
show_handstrue

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 with background, this is how you get a pose overlaying an actual frame without running detection again.
  • background - none, scale, or crop/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.

CategoryDWposeDeluxe

Inputs (10)

NameTypeDefaultDescription
keypointsPOSE_KEYPOINT
imageoptIMAGE
poses_to_printoptINT11–100
backgroundoptCOMBOnone3 options: none, scale, crop/pad
brightnessoptFLOAT0.500–1
custom_optionsoptDWOPOSE_CUSTOM_OPTIONS
show_bodyoptBOOLEANtrue
show_feetoptBOOLEANtrue
show_faceoptBOOLEANtrue
show_handsoptBOOLEANtrue

Outputs (2)

NameTypeDescription
pose_imageIMAGE
input_keypoint_infoSTRING