AnnotationContext
The annotation context provides additional information on how to display entities.
Entities can use components.ClassId
s and components.KeypointId
s to provide annotations, and
the labels and colors will be looked up in the appropriate
annotation context. We use the first annotation context we find in the
path-hierarchy when searching up through the ancestors of a given entity
path.
See also datatypes.ClassDescription
.
Components components
Required: AnnotationContext
Shown in shown-in
API reference links api-reference-links
- 🌊 C++ API docs for
AnnotationContext
- 🐍 Python API docs for
AnnotationContext
- 🦀 Rust API docs for
AnnotationContext
Examples examples
Rectangles rectangles
import rerun as rr
rr.init("rerun_example_annotation_context_rects", spawn=True)
# Log an annotation context to assign a label and color to each class
rr.log("/", rr.AnnotationContext([(1, "red", (255, 0, 0)), (2, "green", (0, 255, 0))]), static=True)
# Log a batch of 2 rectangles with different `class_ids`
rr.log("detections", rr.Boxes2D(mins=[[-2, -2], [0, 0]], sizes=[[3, 3], [2, 2]], class_ids=[1, 2]))
Segmentation segmentation
"""Log a segmentation image with annotations."""
import numpy as np
import rerun as rr
rr.init("rerun_example_annotation_context_segmentation", spawn=True)
# Create a simple segmentation image
image = np.zeros((200, 300), dtype=np.uint8)
image[50:100, 50:120] = 1
image[100:180, 130:280] = 2
# Log an annotation context to assign a label and color to each class
rr.log("segmentation", rr.AnnotationContext([(1, "red", (255, 0, 0)), (2, "green", (0, 255, 0))]), static=True)
rr.log("segmentation/image", rr.SegmentationImage(image))
Connections connections
"""Log annotation context with connections between keypoints."""
import rerun as rr
from rerun.datatypes import ClassDescription
rr.init("rerun_example_annotation_context_connections", spawn=True)
rr.log(
"/",
rr.AnnotationContext([
ClassDescription(
info=0,
keypoint_annotations=[
(0, "zero", (255, 0, 0)),
(1, "one", (0, 255, 0)),
(2, "two", (0, 0, 255)),
(3, "three", (255, 255, 0)),
],
keypoint_connections=[(0, 2), (1, 2), (2, 3)],
)
]),
static=True,
)
rr.log(
"points",
rr.Points3D(
[
(0, 0, 0),
(50, 0, 20),
(100, 100, 30),
(0, 50, 40),
],
class_ids=[0],
keypoint_ids=[0, 1, 2, 3],
),
)