Exemplo n.º 1
0
    def from_json(cls, data, project_meta, key_id_map: KeyIdMap=None):
        '''
        The function from_json convert videoannotation from json format to VideoAnnotation class object.
        :param data: input videoannotation in json format
        :param project_meta: ProjectMeta class object
        :param key_id_map: KeyIdMap class object
        :return: VideoAnnotation class object
        '''
        #video_name = data[VIDEO_NAME]
        video_key = uuid.UUID(data[KEY]) if KEY in data else uuid.uuid4()

        if key_id_map is not None:
            key_id_map.add_video(video_key, data.get(VIDEO_ID, None))

        img_size_dict = data[IMG_SIZE]
        img_height = img_size_dict[IMG_SIZE_HEIGHT]
        img_width = img_size_dict[IMG_SIZE_WIDTH]
        img_size = (img_height, img_width)

        description = data.get(DESCRIPTION, "")
        frames_count = data[FRAMES_COUNT]

        tags = VideoTagCollection.from_json(data[TAGS], project_meta.tag_metas, key_id_map)
        objects = VideoObjectCollection.from_json(data[OBJECTS], project_meta, key_id_map)
        frames = FrameCollection.from_json(data[FRAMES], objects, frames_count, key_id_map)

        return cls(img_size=img_size,
                   frames_count=frames_count,
                   objects=objects,
                   frames=frames,
                   tags=tags,
                   description=description,
                   key=video_key)
Exemplo n.º 2
0
    def from_json(cls, data, project_meta, key_id_map: KeyIdMap = None):
        '''
        :param data: input PointcloudAnnotation in json format
        :param project_meta: ProjectMeta class object
        :param key_id_map: KeyIdMap class object
        :return: PointcloudAnnotation class object
        '''
        item_key = uuid.UUID(data[KEY]) if KEY in data else uuid.uuid4()
        if key_id_map is not None:
            key_id_map.add_video(item_key, data.get(POINTCLOUD_ID, None))
        description = data.get(DESCRIPTION, "")
        tags = VideoTagCollection.from_json(data[TAGS], project_meta.tag_metas,
                                            key_id_map)
        objects = PointcloudObjectCollection.from_json(data[OBJECTS],
                                                       project_meta,
                                                       key_id_map)

        figures = []
        for figure_json in data.get(FIGURES, []):
            figure = PointcloudFigure.from_json(figure_json, objects, None,
                                                key_id_map)
            figures.append(figure)

        return cls(objects=objects,
                   figures=figures,
                   tags=tags,
                   description=description,
                   key=item_key)