Source code for supervisely.api.video.video_object_api
# coding: utf-8
"""Work with video objects via the Supervisely API."""
# docs
from typing import List, Optional
from supervisely.api.entity_annotation.object_api import ObjectApi
from supervisely.api.video.video_tag_api import VideoObjectTagApi
from supervisely.video_annotation.key_id_map import KeyIdMap
from supervisely.video_annotation.video_object_collection import VideoObjectCollection
[docs]
class VideoObjectApi(ObjectApi):
"""
API for working with video objects.
"""
def __init__(self, api):
"""
:param api: :class:`~supervisely.api.api.Api` object to use for API connection.
:type api: :class:`~supervisely.api.api.Api`
"""
super().__init__(api)
self.tag = VideoObjectTagApi(api)
[docs]
def append_bulk(
self,
video_id: int,
objects: VideoObjectCollection,
key_id_map: Optional[KeyIdMap] = None,
) -> List[int]:
"""
Add objects to annotation objects.
:param video_id: Video ID in Supervisely.
:type video_id: int
:param objects: VideoObjectCollection objects collection.
:type objects: :class:`~supervisely.video_annotation.video_object_collection.VideoObjectCollection`
:param key_id_map: KeyIdMap object.
:type key_id_map: :class:`~supervisely.video_annotation.key_id_map.KeyIdMap`, optional
:returns: List of object IDs
:rtype: List[int]
:Usage Example:
.. code-block:: python
import os
from dotenv import load_dotenv
import supervisely as sly
from supervisely.video_annotation.key_id_map import KeyIdMap
# Load secrets and create API object from .env file (recommended)
# Learn more here: https://developer.supervisely.com/getting-started/basics-of-authentication
if sly.is_development():
load_dotenv(os.path.expanduser("~/supervisely.env"))
api = sly.Api.from_env()
project_id = 17209
video_id = 19402023
meta_json = api.project.get_meta(project_id)
project_meta = sly.ProjectMeta.from_json(meta_json)
key_id_map = KeyIdMap()
ann_info = api.video.annotation.download(video_id)
ann = sly.VideoAnnotation.from_json(ann_info, project_meta, key_id_map)
api.video.object.append_bulk(video_id, ann.objects, key_id_map)
"""
info = self._api.video.get_info_by_id(video_id)
return self._append_bulk(
self._api.video.tag, video_id, info.project_id, info.dataset_id, objects, key_id_map
)