in notebooks/src/code/data/geometry.py [0:0]
def __init__(self, manifest_obj: dict):
"""Initialize a BoundingBoxAnnotationResult
Arguments
---------
manifest_obj : dict
The contents of the output field of a record in a SMGT Object Detection labelling job
output manifest, or equivalent.
"""
try:
image_size_spec = manifest_obj["image_size"][0]
self._image_height = int(image_size_spec["height"])
self._image_width = int(image_size_spec["width"])
self._image_depth = (
int(image_size_spec["depth"]) if "depth" in image_size_spec else None
)
except Exception as e:
raise ValueError(
"".join(
(
"manifest_obj must be a dictionary including 'image_size': a list of ",
"length 1 whose first/only element is a dict with integer properties ",
f"'height' and 'width', optionally also 'depth'. Got: {manifest_obj}",
)
)
) from e
assert (
len(manifest_obj["image_size"]) == 1
), f"manifest_obj['image_size'] must be a list of len 1. Got: {manifest_obj['image_size']}"
try:
self._boxes = [
AnnotationBoundingBox(
b,
image_height=self._image_height,
image_width=self._image_width,
)
for b in manifest_obj["annotations"]
]
except Exception as e:
raise ValueError(
"".join(
(
"manifest_obj['annotations'] must be a list-like of absolute TLHW bounding box ",
f"dicts with class_id. Got {manifest_obj['annotations']}",
)
)
) from e