Source code for otx.api.entities.media

"""This module implements the Media entity."""

# Copyright (C) 2021-2022 Intel Corporation
# SPDX-License-Identifier: Apache-2.0
#

import abc
from typing import Optional

import numpy as np

from otx.api.entities.annotation import Annotation


[docs] class IMediaEntity(metaclass=abc.ABCMeta): """Media entity interface. This interface is used to represent any kind of media data, on which users can annotate and tasks can perform training/analysis. """
[docs] class IMedia2DEntity(IMediaEntity, metaclass=abc.ABCMeta): """This interface is used to represent IMedia which is 2-dimensional media, i.e., containing height and width.""" @property # type:ignore @abc.abstractmethod def numpy(self) -> np.ndarray: """Returns the numpy representation of the 2D Media object.""" raise NotImplementedError @numpy.setter # type:ignore @abc.abstractmethod def numpy(self, value: np.ndarray): raise NotImplementedError
[docs] @abc.abstractmethod def roi_numpy(self, roi: Optional[Annotation]) -> np.ndarray: """Returns the numpy representation of the 2D Media object while taking the roi into account.""" raise NotImplementedError
@property @abc.abstractmethod def height(self) -> int: """Returns the height of the 2D Media object.""" raise NotImplementedError @property @abc.abstractmethod def width(self) -> int: """Returns the width representation of the 2D Media object.""" raise NotImplementedError @property def path(self) -> Optional[str]: """Returns the path of the 2D Media object.""" return None