OpenPose COCO 18 keypoints: the 18 body-part indices
18 body parts · from OpenPose poseParameters.cpp (branch master) · read 2026-10-17
OpenPose COCO 18 has 18 body parts, numbered from 0 Nose to 17 LEar, as POSE_COCO_BODY_PARTS in OpenPose's src/openpose/pose/poseParameters.cpp defines them. The sources tie it to OpenPose COCO model (PoseModel::COCO_18). All 18 names match a point in another scheme once lowercased with separators removed. Read from the sources on 2026-10-17.
Models that output it
- OpenPose COCO model (PoseModel::COCO_18) · OpenPose modelsEvidence: OpenPose output format doc (02_output.md) says “Pose Output Format (COCO)” (source).
All 18 body parts
Names are copied exactly from POSE_COCO_BODY_PARTS in OpenPose's src/openpose/pose/poseParameters.cpp. The index is the position the source assigns. The last column says whether another scheme on this site spells the same name, by the crosswalk rule.
| Index | Name | Same name in |
|---|---|---|
| 0 | Nose | BlazePose 33, ML Kit 33, COCO 17, Halpe26, COCO-WholeBody 133, OpenPose BODY_25, Apple Vision 2D |
| 1 | Neck | Halpe26, OpenPose BODY_25, Apple Vision 2D |
| 2 | RShoulder | OpenPose BODY_25 |
| 3 | RElbow | OpenPose BODY_25 |
| 4 | RWrist | OpenPose BODY_25 |
| 5 | LShoulder | OpenPose BODY_25 |
| 6 | LElbow | OpenPose BODY_25 |
| 7 | LWrist | OpenPose BODY_25 |
| 8 | RHip | OpenPose BODY_25 |
| 9 | RKnee | OpenPose BODY_25 |
| 10 | RAnkle | OpenPose BODY_25 |
| 11 | LHip | OpenPose BODY_25 |
| 12 | LKnee | OpenPose BODY_25 |
| 13 | LAnkle | OpenPose BODY_25 |
| 14 | REye | OpenPose BODY_25 |
| 15 | LEye | OpenPose BODY_25 |
| 16 | REar | OpenPose BODY_25 |
| 17 | LEar | OpenPose BODY_25 |
Not counted: the same map also lists 18 Background. The source excludes it from the body-part count: “POSE_NUMBER_BODY_PARTS equivalent to size of std::map POSE_BODY_XX_BODY_PARTS - 1 (removing background)”
What the sources say about the output
Copied from the sources, whitespace collapsed.
pose_keypoints_2d: Body part locations (x,y) and detection confidence (c) formatted asx0,y0,c0,x1,y1,c1,.... (OpenPose output format doc (02_output.md))- The coordinates
xandycan be normalized to the range [0,1], [-1,1], [0, source size], [0, output size], etc. (see the flag--keypoint_scalefor more information), while the confidence score (c) in the range [0,1]. (OpenPose output format doc (02_output.md))
How this list was checked
- the map's keys run 0 to N-1
- the map ends with {18, "Background"}, which the source excludes from the body-part count
- POSE_NUMBER_BODY_PARTS gives POSE_COCO_BODY_PARTS 18 body parts
- 18 of 18 names are shared with another scheme; the rest are listed as unmapped.
Other schemes
Questions
What are the 18 OpenPose COCO body parts in index order?
POSE_COCO_BODY_PARTS in OpenPose's src/openpose/pose/poseParameters.cpp numbers them 0 Nose, 1 Neck, 2 RShoulder, 3 RElbow, 4 RWrist, 5 LShoulder, 6 LElbow, 7 LWrist, 8 RHip, 9 RKnee, 10 RAnkle, 11 LHip, 12 LKnee, 13 LAnkle, 14 REye, 15 LEye, 16 REar, 17 LEar. The same map also lists 18 Background, which the source excludes from the body-part count.
Which pose models output OpenPose COCO body parts?
OpenPose COCO model (PoseModel::COCO_18): OpenPose output format doc (02_output.md) says “Pose Output Format (COCO)”. Only models a fetched source ties to this scheme are listed.
How do OpenPose COCO body parts map to other pose keypoint schemes?
By name only. 18 of the 18 share an identical name, once lowercased with separators removed, with a point in BlazePose 33, ML Kit 33, COCO 17, Halpe26, COCO-WholeBody 133, OpenPose BODY_25 and Apple Vision 2D, so every one has a crosswalk row. A shared row means the names match, not that two models place the point in the same spot.
What coordinates come with OpenPose COCO body parts?
In the sources' words: “The coordinates x and y can be normalized to the range [0,1], [-1,1], [0, source size], [0, output size], etc. (see the flag --keypoint_scale for more information), while the confidence score (c) in the range [0,1].” (OpenPose output format doc (02_output.md)).
Sources
- OpenPose poseParameters.cpp · CMU-Perceptual-Computing-Lab/openpose, branch master · read 2026-10-17 · sha256 d2e441fa73f9
- OpenPose output format doc (02_output.md) · CMU-Perceptual-Computing-Lab/openpose, branch master · read 2026-10-17 · sha256 a42392573734
Generated by scripts/fetch-pose-keypoints.mjs and compiled by AIFitnessAPI. The sources remain the authority.