Source code for supervisely.volume_annotation.volume_object

# coding: utf-8

import uuid

from typing import Optional, Union
from numpy import ndarray

from supervisely.video_annotation.video_object import VideoObject
from supervisely.volume_annotation import volume_figure
from supervisely.volume_annotation.volume_tag_collection import VolumeTagCollection
from supervisely.geometry.mask_3d import Mask3D

[docs]class VolumeObject(VideoObject): """ VolumeObject object for :class:`VolumeAnnotation<supervisely.volume_annotation.volume_annotation.VolumeAnnotation>`. :class:`VolumeObject<VolumeObject>` object is immutable. :param obj_class: VolumeObject :class:`class<supervisely.annotation.obj_class.ObjClass>`. :type obj_class: ObjClass :param tags: VolumeObject :class:`tags<supervisely.volume_annotation.volume_tag_collection.VolumeTagCollection>`. :type tags: VolumeTagCollection, optional :param key: The UUID key associated with the VolumeFigure. :type key: UUID, optional :param class_id: ID of :class:`ObjClass<supervisely.annotation.obj_class.ObjClass>` to which VolumeObject belongs. :type class_id: int, optional :param labeler_login: Login of the user who created VolumeObject. :type labeler_login: str, optional :param updated_at: Date and Time when VolumeObject was modified last. Date Format: Year:Month:Day:Hour:Minute:Seconds. Example: '2021-01-22T19:37:50.158Z'. :type updated_at: str, optional :param created_at: Date and Time when VolumeObject was created. Date Format is the same as in "updated_at" parameter. :type created_at: str, optional :param mask_3d: Path for local geometry file, array with geometry data or Mask3D geometry object :type mask_3d: Union[str, ndarray, Mask3D], optional :Usage example: .. code-block:: python import supervisely as sly obj_class_heart = sly.ObjClass('heart', sly.Rectangle) volume_obj_heart = sly.VolumeObject(obj_class_heart) volume_obj_heart_json = volume_obj_heart.to_json() print(volume_obj_heart_json) # Output: { # "key": "6b819f1840f84d669b32cdec225385f0", # "classTitle": "heart", # "tags": [] # } """ def __init__( self, obj_class, tags: Optional[VolumeTagCollection] = None, key: Optional[uuid.UUID] = None, class_id: Optional[int] = None, labeler_login: Optional[str] = None, updated_at: Optional[str] = None, created_at: Optional[str] = None, mask_3d: Optional[Union[Mask3D, ndarray, str]] = None, ): super().__init__( obj_class=obj_class, tags=tags, key=key, class_id=class_id, labeler_login=labeler_login, updated_at=updated_at, created_at=created_at, ) if mask_3d is not None: if isinstance(mask_3d, str): self.figure = volume_figure.VolumeFigure( self, Mask3D.create_from_file(mask_3d), labeler_login, updated_at, created_at ) elif isinstance(mask_3d, ndarray): self.figure = volume_figure.VolumeFigure( self, Mask3D(mask_3d), labeler_login, updated_at, created_at ) elif isinstance(mask_3d, Mask3D): self.figure = volume_figure.VolumeFigure( self, mask_3d, labeler_login, updated_at, created_at ) else: raise TypeError("mask_3d type must be one of [Mask3D, ndarray, str]")