SPPAS 4.20

Module sppas.src.videodata

Class sppasCoordsVideoBuffer

Description

A video buffer of images with a list of coordinates.

Constructor

Create a new instance.

Parameters
  • video: (str) The video filename to browse
  • size: (int) Number of images of the buffer or -1 for auto
View Source
def __init__(self, video=None, size=-1):
    """Create a new instance.

    :param video: (str) The video filename to browse
    :param size: (int) Number of images of the buffer or -1 for auto

    """
    super(sppasCoordsVideoBuffer, self).__init__(video, size=size, overlap=0)
    self.__coords = [list()] * size

Public functions

reset

Override. Reset all the info related to the buffer content.

View Source
def reset(self):
    """Override. Reset all the info related to the buffer content."""
    sppasVideoReaderBuffer.reset(self)
    self.__coords = [list()] * self.get_buffer_size()
next

Override. Fill in the buffer with the next images & reset coords.

View Source
def next(self):
    """Override. Fill in the buffer with the next images & reset coords.

        """
    ret = sppasVideoReaderBuffer.next(self)
    self.__coords = [list()] * self.get_buffer_size()
    return ret
get_coordinates

Return the coordinates of a given image.

Parameters
  • buffer_index: (int) Index of the image in the buffer
Returns
  • (list of sppasCoords) Coordinates
View Source
def get_coordinates(self, buffer_index=None):
    """Return the coordinates of a given image.

        :param buffer_index: (int) Index of the image in the buffer
        :return: (list of sppasCoords) Coordinates

        """
    if buffer_index is not None:
        buffer_index = self.check_buffer_index(buffer_index)
        return self.__coords[buffer_index]
    else:
        if len(self.__coords) != self.__len__():
            raise ValueError('Coordinates were not properly associated to images of the buffer')
        return self.__coords
set_coordinates

Set the coordinates to a given image index.

Parameters
  • buffer_index: (int) Index of the image in the buffer
  • coords: (list of sppasCoords) Set the list of coords
View Source
def set_coordinates(self, buffer_index, coords):
    """Set the coordinates to a given image index.

        :param buffer_index: (int) Index of the image in the buffer
        :param coords: (list of sppasCoords) Set the list of coords

        """
    buffer_index = self.check_buffer_index(buffer_index)
    if isinstance(coords, (list, tuple)) is True:
        for c in coords:
            if isinstance(c, sppasCoords) is False:
                raise sppasTypeError(str(type(c)), 'sppasCoords')
        self.__coords[buffer_index] = coords
    else:
        raise TypeError(str(type(coords)), 'list/tuple')
index_coordinate

Index of the given coordinate.

Parameters
  • buffer_index
  • coord
View Source
def index_coordinate(self, buffer_index, coord):
    """Index of the given coordinate."""
    buffer_index = self.check_buffer_index(buffer_index)
    return self.__coords[buffer_index].index(coord)
get_coordinate

Return a coordinate of a given image.

Parameters
  • buffer_index: (int) Index of the image in the buffer
  • coord_index: (int) Index of the coord
Returns
  • (sppasCoords) Coordinates
View Source
def get_coordinate(self, buffer_index, coord_index):
    """Return a coordinate of a given image.

        :param buffer_index: (int) Index of the image in the buffer
        :param coord_index: (int) Index of the coord
        :return: (sppasCoords) Coordinates

        """
    if len(self.__coords[buffer_index]) == 0:
        raise ValueError('No coordinate at buffer index {:d}'.format(buffer_index))
    buffer_index = self.check_buffer_index(buffer_index)
    if 0 <= coord_index < len(self.__coords[buffer_index]):
        return self.__coords[buffer_index][coord_index]
    raise IndexError('Invalid coordinate index value {:d}. Should range [0; {:d}]'.format(coord_index, len(self.__coords[buffer_index])))
set_coordinate

Assign the coordinate to a given image index.

Parameters
  • buffer_index: (int) Index of the image in the buffer
  • coord_index: (int) Index of the coord
  • coord: (sppasCoords) Append the given coord
View Source
def set_coordinate(self, buffer_index, coord_index, coord):
    """Assign the coordinate to a given image index.

        :param buffer_index: (int) Index of the image in the buffer
        :param coord_index: (int) Index of the coord
        :param coord: (sppasCoords) Append the given coord

        """
    buffer_index = self.check_buffer_index(buffer_index)
    if 0 <= coord_index < len(self.__coords[buffer_index]):
        if isinstance(coord, sppasCoords):
            self.__coords[buffer_index][coord_index] = coord
        else:
            raise TypeError('')
    else:
        raise ValueError('Invalid coordinate index value.')
append_coordinate

Append the coordinates to a given image index.

Parameters
  • buffer_index: (int) Index of the image in the buffer
  • coord: (sppasCoords) Append the given coord
View Source
def append_coordinate(self, buffer_index, coord):
    """Append the coordinates to a given image index.

        :param buffer_index: (int) Index of the image in the buffer
        :param coord: (sppasCoords) Append the given coord

        """
    buffer_index = self.check_buffer_index(buffer_index)
    if isinstance(coord, sppasCoords):
        self.__coords[buffer_index].append(coord)
    else:
        raise TypeError('')
remove_coordinate

Remove the coordinates to a given image index.

Parameters
  • buffer_index: (int) Index of the image in the buffer
  • coord: (sppasCoords) Remove the given coord
View Source
def remove_coordinate(self, buffer_index, coord):
    """Remove the coordinates to a given image index.

        :param buffer_index: (int) Index of the image in the buffer
        :param coord: (sppasCoords) Remove the given coord

        """
    buffer_index = self.check_buffer_index(buffer_index)
    if coord in self.__coords[buffer_index]:
        self.__coords[buffer_index].remove(coord)
pop_coordinate

Remove the coordinates to a given image index.

Parameters
  • buffer_index: (int) Index of the image in the buffer
  • coord_index: (int) Pop the given coord
View Source
def pop_coordinate(self, buffer_index, coord_index):
    """Remove the coordinates to a given image index.

        :param buffer_index: (int) Index of the image in the buffer
        :param coord_index: (int) Pop the given coord

        """
    buffer_index = self.check_buffer_index(buffer_index)
    self.__coords[buffer_index].pop(coord_index)