---
title: "OpenPose Models: BODY_25 vs COCO, Output Format and Licence"
canonical: "https://aifitnessapi.com/motion/openpose-models"
cluster: "AI Motion"
primary_query: "openpose model"
last_reviewed: "2026-10-17"
description: "CMU's OpenPose: the BODY_25 and COCO body models, hand and face keypoints, the JSON output layout, CPU and GPU builds, and its noncommercial licence."
publisher: "AIFitnessAPI — independent, not sponsored"
cite_as: "\"OpenPose Models: BODY_25 vs COCO, Output Format and Licence\", AIFitnessAPI, https://aifitnessapi.com/motion/openpose-models"
---

# OpenPose Models: BODY_25 vs COCO, Output Format and Licence

> OpenPose is Carnegie Mellon University's real-time multi-person keypoint detector; its README describes body and foot estimation with 15, 18 or 25 keypoints, 2x21 hand keypoints and 70 face keypoints. Its output document describes two body formats, BODY_25 and COCO, and the source lists their 25 and 18 body parts, BODY_25 adding a mid-hip and six foot points to COCO's names. It runs as CUDA, OpenCL or CPU-only builds on Ubuntu, Windows and macOS, and its licence allows noncommercial research use only.

- Canonical: https://aifitnessapi.com/motion/openpose-models
- Last reviewed: 2026-10-17
- Publisher: AIFitnessAPI (https://aifitnessapi.com) — independent, not sponsored
- Cite as: "OpenPose Models: BODY_25 vs COCO, Output Format and Licence", AIFitnessAPI, https://aifitnessapi.com/motion/openpose-models

---

This page covers what CMU's OpenPose repository says about its models and output, read on October 17, 2026. The licence is read in full in [pose estimation model licenses](/motion/pose-estimation-model-licenses), and the multi-person alternatives are in [multi-person pose tracking](/motion/multi-person-pose-tracking).

## Body models

OpenPose's output document shows how to read the body-part order of any model from its C++ API, naming `BODY_25`, `COCO_18`, `MPI_15`, `BODY_25B` and `BODY_135`. Two have output-format diagrams in that document, and their orders, read from `poseParameters.cpp`, are:

- **BODY_25**: 25 body parts, from 0 Nose to 24 RHeel. See [the BODY_25 keypoint map](/pose-keypoints/openpose-body-25).
- **COCO** (`PoseModel::COCO_18`): 18 body parts, from 0 Nose to 17 LEar. See [the OpenPose COCO 18 keypoint map](/pose-keypoints/openpose-coco-18).

BODY_25 contains every COCO 18 name plus MidHip and six foot points (LBigToe, LSmallToe, LHeel, RBigToe, RSmallToe, RHeel), and the shared names sit at different indices after index 7: RHip is 9 in BODY_25 and 8 in COCO 18. Each map ends with a Background entry, which the source excludes from the part count. OpenPose's COCO 18 is not the 17-keypoint COCO order MoveNet and YOLO pose use: it adds Neck at index 1 and spells sides as R and L, so [the crosswalk](/pose-keypoints#crosswalk) does not join its points to COCO 17's.

The README's headline figure is 135 keypoints in total for body, hand, face and foot together, and the C++ API names a BODY_135 model.

## Output format

With `--write_json`, OpenPose writes one JSON file per frame with a `people` array. Each person's `pose_keypoints_2d` holds body part locations and detection confidence "formatted as x0,y0,c0,x1,y1,c1,...", in the model's body-part order. The `--keypoint_scale` flag sets the coordinate range, for example 0 to 1, -1 to 1, or source or output pixels, and the confidence runs from 0 to 1. Face and hand keypoints come in matching `face_keypoints_2d`, `hand_left_keypoints_2d` and `hand_right_keypoints_2d` arrays, and the 3D fields stay empty unless `--3d` is enabled.

## Platforms

The README lists Ubuntu 20, 18, 16 and 14, Windows 10 and 8, Mac OSX and the Nvidia TX2, with CUDA (Nvidia GPU), OpenCL (AMD GPU) and CPU-only builds, a command-line demo, C++ and Python APIs, and a portable Windows demo. It documents single-person 3D keypoint detection by triangulation from multiple views with Flir cameras, and says body runtime is invariant to the number of people detected while hand and face runtime depends on it.

## Licence

The LICENSE is headed "ACADEMIC OR NON-PROFIT ORGANIZATION NONCOMMERCIAL RESEARCH USE ONLY" and grants a license "to use the Software for noncommercial research purposes". The README says OpenPose "is freely available for free non-commercial use" and points commercial users to a FlintBox link. In our reading, a commercial fitness app needs that separate licence; the details are in [pose estimation model licenses](/motion/pose-estimation-model-licenses).

## When it fits

Our reading: OpenPose fits research and prototypes that want body, hands and face from one system, or that must emit BODY_25 for tools that expect it. For a commercial product the licence usually decides against it before the engineering does; [OpenPose alternatives you can ship commercially](/alternatives/openpose-alternatives) covers the options, and [multi-person pose tracking](/motion/multi-person-pose-tracking) the architecture.

## Sources

- [github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/README.md](https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/README.md) — Body/foot, hand and face keypoint counts, the 135-keypoint headline, 3D triangulation, OS and hardware support, APIs, and the non-commercial and FlintBox licensing text. (checked 2026-10-17)
- [github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/doc/02_output.md](https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/doc/02_output.md) — BODY_25 and COCO output formats, the JSON layout and --keypoint_scale, the 3D fields, and the PoseModel names. (checked 2026-10-17)
- [github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/src/openpose/pose/poseParameters.cpp](https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/src/openpose/pose/poseParameters.cpp) — POSE_BODY_25_BODY_PARTS and POSE_COCO_BODY_PARTS, the Background entries and POSE_NUMBER_BODY_PARTS. (checked 2026-10-17)
- [github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/LICENSE](https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/LICENSE) — The noncommercial research heading and grant. (checked 2026-10-17)

## FAQ

### What is the difference between OpenPose's BODY_25 and COCO body models?

Seven points and the numbering. OpenPose's poseParameters.cpp lists 25 body parts for BODY_25 and 18 for COCO; BODY_25 has every COCO name plus MidHip at index 8 and six foot points at 19 to 24. Indices 0 to 7 match, from Nose to LWrist, but the rest shift: RHip is 9 in BODY_25 and 8 in COCO. Both maps end with a Background entry that is not counted as a body part.

[Permalink](https://aifitnessapi.com/motion/openpose-models#faq-1)

### How is OpenPose's JSON keypoint output laid out?

One file per frame with a people array, per OpenPose's output document. Each person's pose_keypoints_2d is a flat list of x, y and confidence for every body part in the model's order, so body part i starts at position 3i. The --keypoint_scale flag chooses the coordinate range, the confidence runs from 0 to 1, and face and hands have their own arrays.

[Permalink](https://aifitnessapi.com/motion/openpose-models#faq-2)

### Does OpenPose need an NVIDIA GPU?

No. The OpenPose README lists CUDA builds for Nvidia GPUs, OpenCL builds for AMD GPUs and non-GPU, CPU-only builds, on Ubuntu, Windows, Mac OSX and the Nvidia TX2. The README does not give speed figures for each build in the files we read, so measure the one you plan to ship on.

[Permalink](https://aifitnessapi.com/motion/openpose-models#faq-3)

### Can OpenPose estimate 3D poses?

Only in a multi-camera setup. The OpenPose README documents 3D real-time single-person keypoint detection by triangulation from multiple single views, with synchronization of Flir cameras handled; its 3D JSON fields stay empty unless the --3d flag is enabled. From one ordinary camera it outputs 2D keypoints.

[Permalink](https://aifitnessapi.com/motion/openpose-models#faq-4)
