Nodes/ComfyUI-ControlNet-Nodes/CCTech OpenPose Preprocessor ⚡
ComfyUI Node

CCTech OpenPose Preprocessor ⚡

OpenPose skeletons without DWPose — and the license you need to read first

By ChrisColeTech·Created 5 days ago·Updated a day ago· 2
CCTech OpenPose Preprocessor ⚡
  • image
  • IMAGE
resolution512
detect_bodytrue
detect_handtrue
detect_facetrue
batch_size8

You want the person in your image to hit a specific pose - a dance move, a composition, a hand gesture - and OpenPose is still how you tell a ControlNet where the body goes. This node runs the classic three-CNN detector that predates DWPose: one network for body keypoints, one for hands, one for the face, and it renders the result as the familiar stick-figure skeleton on black.

Pose conditioning pairs beautifully with depth - OpenPose puts the person in position, depth puts them in the scene, and multi-ControlNet blends both. It's the same pose vocabulary every OpenPose-ControlNet checkpoint expects, so the output drops straight into the control_image input.

How it works

Under the hood are three separate CNNs from the Carnegie Mellon OpenPose lineage - body, hand, and face - ported as real architecture code from comfyui_controlnet_aux (Apache-2.0), not wrapped through some other pack. The weights auto-download from HuggingFace on first use into ComfyUI/models/openpose/. The interesting implementation bit: this node batches. Instead of running detection in a Python loop per frame, it stacks frames into the CNN forward passes in chunks, which matters if you're feeding it a video frame sequence rather than one image.

Inputs and outputs that matter

  • image - the photo or video frame with a person in it.
  • resolution (default 512, 64–2048) - detection resolution; higher catches more detail but costs time and VRAM.
  • detect_body, detect_hand, detect_face (all default on) - you can strip out what you don't need. For a face-focused ControlNet you'd leave face on and switch the others off.
  • batch_size (optional, default 8, 1–64) - frames per stacked CNN forward. Higher is faster through a video, but each step eats more VRAM. It's in the optional section, so it defaults to 8 even in older saved workflows that don't wire it.

Output is one IMAGE: the skeleton rendered on a black canvas. Wire it into an OpenPose ControlNet's control_image. There's also a backward-compatible alias where an earlier build registered this node under the bare id OpenPose - same class, both ids resolve, so old saved workflows keep loading.

The license, before anything else

Read the docstring in the node, because this is the one genuinely commercial-relevant catch in the pack: the underlying OpenPose architecture and checkpoints carry CMU's license - academic or non-profit, noncommercial research use only. The wrapper code here is Apache-2.0, but the weights and architecture lineage are not. That's the same situation as every other ComfyUI pack shipping this detector, including comfyui_controlnet_aux itself. If you're using it commercially, this isn't the pose node you want - check vendor/openpose.py's header for the exact text and shop around for a differently-licensed pose detector.

Installing it

Install once for the whole pack: ComfyUI Manager → search "ComfyUI-ControlNet-Nodes", or

cd ComfyUI/custom_nodes
git clone https://github.com/ChrisColeTech/ComfyUI-ControlNet-Nodes

then restart ComfyUI. It shows up under 🤖 CCTech/Preprocessors. No extra dependencies beyond the pack's own (huggingface_hub, opencv-python).

Common issues

First run downloads three checkpoints (body, hand, face), so don't panic when the queue stalls there. If hands look mangled, that's the pre-DWPose detector showing its age - DWPose genuinely does better hands, and this node doesn't try to pretend otherwise. If you're only ever doing single images, you can leave batch_size alone; it only matters when a frame sequence is coming through, and if you're pushing it past the default watch your VRAM.

Category🤖 CCTech/Preprocessors

Inputs (6)

NameTypeDefaultDescription
imageIMAGE
resolutionINT51264–2048
detect_bodyBOOLEANtrue
detect_handBOOLEANtrue
detect_faceBOOLEANtrue
batch_sizeoptINT81–64Frames per stacked CNN forward - higher is faster, uses more VRAM.

Outputs (1)

NameTypeDescription
IMAGEIMAGE