Skip to content

GeometryDetectionAnnotations

Represents a collection of geometry-detection annotations (e.g. circles, ellipses, lines, contours) per image. Each item is a GeometryDetectionAnnotation (or equivalent dict) with geometry_shape, geometry, and optionally id, image_id, category_id, segmentation, bbox, area, iscrowd, score. This datatype is used for geometry detection inputs and outputs within the Telekinesis ecosystem.

Field

Required

FieldTypeDescription
annotationslist[dict]List of annotation dicts; each has geometry_shape (str: "circle", "ellipse", "line", "contour") and geometry (dict; e.g. circle: center, radius; line: rho, theta; contour: points).

Optional

None.

Methods

MethodDescription
to_list()Returns a Python list of annotation dicts. Each dict has at least geometry_shape (e.g. "circle", "ellipse", "line", "contour") and geometry (shape-specific: e.g. center, radius for circle; rho, theta for line; points for contour); and optionally id, image_id, category_id, segmentation, bbox, area, iscrowd, score.

Example

From the datatypes examples:

python
from datatypes import datatypes
from loguru import logger

# ------------------------------------------------
# 1. Create GeometryDetectionAnnotations instance
# ------------------------------------------------
annotations = datatypes.GeometryDetectionAnnotations(annotations=[
    {
        "id": 0,
        "image_id": 0,
        "geometry": {"center": [0, 0], "radius": 0},
        "geometry_shape": "circle",
        "category_id": 1,
        "segmentation": [],
        "bbox": None,
        "area": 0,
        "iscrowd": 0,
    },
    {
        "id": 1,
        "image_id": 0,
        "geometry": {"center": [0, 0], "axes": [0, 0], "angle": 0},
        "geometry_shape": "ellipse",
        "category_id": 2,
        "segmentation": [],
        "bbox": None,
        "area": 0,
        "iscrowd": 0,
    },
    {
        "id": 2,
        "image_id": 0,
        "geometry": {"points": [[0, 0], [1, 1], [2, 2]]},
        "geometry_shape": "contour",
        "category_id": 3,
        "segmentation": [],
        "bbox": None,
        "area": 0,
        "iscrowd": 0,
    },
])

# ------------------------------------------------
# 2. Access annotations via to_list
# ------------------------------------------------
geo_list = annotations.to_list()
logger.info("GeometryDetectionAnnotations to_list len={}", len(geo_list))
logger.info("GeometryDetectionAnnotations to_list first id={}", geo_list[0]["id"])
logger.info("GeometryDetectionAnnotations to_list first geometry_shape={}", geo_list[0]["geometry_shape"])

# ------------------------------------------------
# 3. Handling None values in optional fields
# ------------------------------------------------
annotation_with_nones = datatypes.GeometryDetectionAnnotations(annotations=[{
    "id": 0,
    "image_id": None,
    "category_id": None,
    "geometry": None,
    "geometry_shape": None,
    "segmentation": None,
    "bbox": None,
    "area": None,
    "iscrowd": 0,
    "score": None,
}])
none_list = annotation_with_nones.to_list()
logger.info("GeometryDetectionAnnotations with None to_list len={}", len(none_list))
logger.info("GeometryDetectionAnnotations with None to_list first id={}", none_list[0]["id"])