A dancer captured mid-motion holding a precise pose, arms and legs frozen in a deliberate shape, the kind of clean body position ControlNet OpenPose reads as a skeleton and transfers onto a generated figure

A held pose is just a set of joint angles. That is exactly what OpenPose reads and hands to the model.

Copy A Pose From Any Photo With ControlNet OpenPose

Stop rerolling for a pose you already have on your desktop

Published July 24, 2026 · RealAIGirls · About an 8 minute read

Share on X Share on Facebook Share on Reddit

You have a clear picture in your head. A woman leaning back against a railing, weight on one hip, one arm raised to shade her eyes. You describe it in the prompt as carefully as you can, and the model gives you forty images of someone standing straight and facing forward. Pose is the one thing text is genuinely bad at pinning down, because a sentence has no idea what a shoulder is doing at forty degrees.

There is a tool that solves this completely, and it does not involve better wording. It involves handing the model a picture of the pose you want. That tool is ControlNet, and the specific part you want for bodies is called OpenPose. Feed it any photo with a person in it, and it will pull the pose out and force your generation to copy it, while leaving the face, the outfit, the setting, and the style entirely up to you.

What ControlNet Actually Is

ControlNet came out of a 2023 research paper titled "Adding Conditional Control to Text-to-Image Diffusion Models," by Lvmin Zhang, Anyi Rao, and Maneesh Agrawala. The idea is a neural network that sits alongside a diffusion model like Stable Diffusion and feeds it an extra channel of instruction beyond the text prompt. That extra channel can be an edge map, a depth map, a segmentation map, or, in our case, a pose skeleton. The prompt says what the scene is made of. ControlNet says where things go.

There are many ControlNet types, one per kind of guidance. We covered the composition side of this in an earlier piece on ControlNet and framing. This one is narrower and more useful day to day: getting a specific human body into a specific position.

The Two Halves: Preprocessor And Model

Here is the single detail that trips up every beginner. ControlNet cannot read your reference photo directly. It needs the photo turned into a clean control map first, and that conversion is done by a separate piece called a preprocessor. So the workflow always has two parts working as a pair.

The preprocessor is the OpenPose detector. Point it at a reference photo and it finds the person's keypoints, the nose, eyes, neck, shoulders, elbows, wrists, hips, knees, and ankles, and draws them as a colored stick figure on a black background. That stick figure is the control image. Then the ControlNet model reads that skeleton and pushes the diffusion process to place a body along those exact lines.

Why bother splitting it this way? Because the skeleton is stripped of everything else. It carries no face, no clothing, no lighting, no background. It is pure geometry. That is what lets you steal a pose from a stock photo of a businessman and paint your own completely different character into it.

The shortcut most people miss. You do not even need a photo. Because the control image is just a skeleton, you can grab a stick figure someone else made, or pose one by hand in an editor, and feed that straight in with the preprocessor set to none. Whole libraries of ready-made OpenPose skeletons exist for exactly this reason.

The OpenPose Variants

OpenPose is not one detector but a small family, and picking the right one saves you a regeneration. They differ only in how much of the body they bother to track.

PreprocessorWhat it capturesReach for it when
OpenPoseBody keypoints only, the core skeletonYou want the stance and nothing else dictated
OpenPose_faceBody plus facial landmarksThe head tilt and expression matter
OpenPose_handBody plus finger keypointsHands are doing something specific
OpenPose_fullBody, face, and hands togetherYou want the whole thing locked

Start with plain OpenPose. The face and hand trackers add control, but they also add rigidity, and a pinned facial skeleton can fight with the character you actually want. There is also a newer detector called DWPose that many people now prefer over the original OpenPose estimator, because it reads hands and fingers more accurately from the source photo. If your setup offers it, DWPose as the preprocessor feeding the same OpenPose ControlNet model is often the cleaner catch.

The Workflow, Start To Finish

Whether you are in AUTOMATIC1111 or ComfyUI, the shape is identical.

  1. Pick a reference photo where the pose reads clearly. A well lit full body shot beats a cramped or shadowed one, because the detector can only find joints it can see.
  2. Load it into the ControlNet unit and set the preprocessor to OpenPose (or DWPose) and the model to the matching OpenPose ControlNet.
  3. Run the preprocessor once and look at the skeleton it produced. This preview step is the one people skip and then wonder why the result is wrong. If an arm is missing or a leg is bent the wrong way in the skeleton, no prompt will fix it.
  4. Write your actual prompt as normal, describing the character, wardrobe, lighting, and scene. None of that competes with the pose.
  5. Generate. The figure lands in the reference stance while everything else obeys your words.

Match the ControlNet model to your base checkpoint's family. An SD 1.5 checkpoint needs a 1.5 OpenPose model, and an SDXL checkpoint needs an SDXL one such as the widely used thibaud OpenPose model for SDXL. Mixing families is the most common reason the skeleton seems to do nothing at all.

Two Dials That Decide Everything

Once it works, two settings control how hard the pose is enforced. Control weight runs from zero to one and sets how strongly the skeleton is obeyed. Near one it is a strict copy. Drop it toward the middle and the pose becomes a strong suggestion the model is allowed to soften, which helps when a rigid copy looks stiff or anatomically forced.

The second is the ending control step, which decides how far into the generation ControlNet keeps steering. Let it guide the early steps that lock in the overall shape, then release it before the final steps, and the model gets room to resolve natural details on its own. A pose that comes out looking mannequin-stiff usually just needs the weight eased down or the control ended a little sooner.

Where It Shines, And Its Limits

Pose transfer is the backbone of consistent, art-directed work. It is how you get the same recurring character into a planned sequence of shots instead of forty random stances, and it pairs naturally with everything in a good posing and body language workflow. Direct the light and camera on top, and you are composing an image rather than gambling on one.

The honest limits are worth knowing. The skeleton captures joint positions, not depth, so a pose foreshortened hard toward the camera can confuse the model about which limb is in front. Hands are still the weak point even with the hand tracker, so expect to reach for targeted inpainting afterward on tricky fingers. And a skeleton with a limb hidden behind the body gives the detector nothing to work with, which is why it may invent a strange arm. Check the preview, pick clean references, and OpenPose turns the single hardest thing to prompt into the easiest thing to control.