VectorGeometry¶
- class VectorGeometry[source]¶
Bases:
supervisely.geometry.geometry.Geometry
VectorGeometry is a base class of geometry for a single
Label
.VectorGeometry
class object is immutable.- Parameters
- exterior : List[PointLocation], List[List[int, int]], List[Tuple[int, int]
Exterior coordinates, object contour is defined with these points (used for
Polygon
).- interior : List[List[PointLocation]], List[List[List[int, int]]], List[List[Tuple[int, int]]]
Interior coordinates, object holes is defined with these points (used for
Polygon
).- sly_id : int, optional
VectorGeometry ID in Supervisely server.
- class_id : int, optional
ID of
ObjClass
to which VectorGeometry belongs.- labeler_login : str, optional
Login of the user who created VectorGeometry.
- updated_at : str, optional
Date and Time when VectorGeometry was modified last. Date Format: Year:Month:Day:Hour:Minute:Seconds. Example: ‘2021-01-22T19:37:50.158Z’.
- created_at : str, optional
Date and Time when VectorGeometry was created. Date Format is the same as in “updated_at” parameter.
- Raises
TypeError
, if exterior or interior parameters are not a list of PointLocation objects- Usage example
import supervisely as sly exterior = [sly.PointLocation(730, 2104), sly.PointLocation(2479, 402), sly.PointLocation(3746, 1646)] # or exterior = [[730, 2104], [2479, 402], [3746, 1646]] # or exterior = [(730, 2104), (2479, 402), (3746, 1646)] interior = [[sly.PointLocation(1907, 1255), sly.PointLocation(2468, 875), sly.PointLocation(2679, 1577)]] # or interior = [[[730, 2104], [2479, 402], [3746, 1646]]] # or interior = [[(730, 2104), (2479, 402), (3746, 1646)]] figure = sly.Polygon(exterior, interior)
Methods
allowed_transforms
Clone from GEOMETRYYY
config_from_json
config_to_json
convert
- param rect
Rectangle
- param bitmap
np.ndarray
Draws the figure contour on a given bitmap canvas :param bitmap: np.ndarray :param color: [R, G, B] :param thickness: (int) :param config: drawing config specific to a concrete subclass, e.g.
Flips current VectorGeometry in horizontal.
Flips current VectorGeometry in vertical.
Deserialize from a JSON-compatible dict :param data: JSON-compatible dict :return: Parsed object
- return
string with name of geometry
Returns 2D boolean mask of the geometry.
Same as geometry_name(), but shorter.
Crops object like "crop" method, but return results with coordinates relative to rect :param rect: :return: list of Geometry
Resizes current VectorGeometry.
Rotates current VectorGeometry.
Scales current VectorGeometry.
Creates Rectangle object from current VectorGeometry.
Convert the VectorGeometry to a json dict.
Translates current VectorGeometry.
validate
Attributes
- return
float
VectorGeometry exterior points.
Converts exterior attribute of VectorGeometry to numpy array.
VectorGeometry interior points.
Converts interior attribute of VectorGeometry to numpy array.
- clone()¶
Clone from GEOMETRYYY
- crop(rect)¶
- Parameters
- rect
Rectangle
- Returns
list of Geometry
-
draw(bitmap, color, thickness=
1
, config=None
)¶ - Parameters
- bitmap
np.ndarray
- color
[R, G, B]
- thickness
used only in Polyline and Point
- config
drawing config specific to a concrete subclass, e.g. per edge colors
-
draw_contour(bitmap, color, thickness=
1
, config=None
)¶ Draws the figure contour on a given bitmap canvas :param bitmap: np.ndarray :param color: [R, G, B] :param thickness: (int) :param config: drawing config specific to a concrete subclass, e.g. per edge colors
- fliplr(img_size)[source]¶
Flips current VectorGeometry in horizontal.
- Parameters
- Returns
VectorGeometry object
- Return type
- Usage Example
# Remember that VectorGeometry class object is immutable, and we need to assign new instance of VectorGeometry to a new variable height, width = 300, 400 fliplr_figure = figure.fliplr((height, width))
- flipud(img_size)[source]¶
Flips current VectorGeometry in vertical.
- Parameters
- Returns
VectorGeometry object
- Return type
- Usage Example
# Remember that VectorGeometry class object is immutable, and we need to assign new instance of VectorGeometry to a new variable height, width = 300, 400 flipud_figure = figure.flipud((height, width))
- classmethod from_json(data)¶
Deserialize from a JSON-compatible dict :param data: JSON-compatible dict :return: Parsed object
- static geometry_name()¶
- Returns
string with name of geometry
- get_mask(img_size)¶
Returns 2D boolean mask of the geometry. With shape as img_size (height, width) and filled with True values inside the geometry and False values outside. dtype = np.bool shape = img_size
- classmethod name()¶
Same as geometry_name(), but shorter. In order to make the code more concise.
- Returns
string with name of geometry
- relative_crop(rect)¶
Crops object like “crop” method, but return results with coordinates relative to rect :param rect: :return: list of Geometry
- resize(in_size, out_size)[source]¶
Resizes current VectorGeometry.
- Parameters
- Returns
VectorGeometry object
- Return type
- Usage Example
# Remember that VectorGeometry class object is immutable, and we need to assign new instance of VectorGeometry to a new variable in_height, in_width = 300, 400 out_height, out_width = 600, 800 resize_figure = figure.resize((in_height, in_width), (out_height, out_width))
- rotate(rotator)[source]¶
Rotates current VectorGeometry.
- Parameters
- rotator : ImageRotator
ImageRotator object for rotate.
- Returns
VectorGeometry object
- Return type
- Usage Example
from supervisely.geometry.image_rotator import ImageRotator # Remember that VectorGeometry class object is immutable, and we need to assign new instance of VectorGeometry to a new variable height, width = 300, 400 rotator = ImageRotator((height, width), 25) rotate_figure = figure.rotate(rotator)
- scale(factor)[source]¶
Scales current VectorGeometry.
- Parameters
- factor : float
Scale parameter.
- Returns
VectorGeometry object
- Return type
- Usage Example
# Remember that VectorGeometry class object is immutable, and we need to assign new instance of VectorGeometry to a new variable scale_figure = figure.scale(0.75)
- to_bbox()[source]¶
Creates Rectangle object from current VectorGeometry.
- Returns
Rectangle object
- Return type
- Usage Example
rectangle = figure.to_bbox()
- to_json()[source]¶
Convert the VectorGeometry to a json dict. Read more about Supervisely format.
- Returns
Json format as a dict
- Return type
- Usage example
figure_json = figure.to_json() print(figure_json) # Output: { # "points": { # "exterior": [ # [2104, 730], # [402, 2479], # [1646, 3746] # ], # "interior": [ # [ # [1255, 1907], # [875, 2468], # [1577, 2679] # ] # ] # } # }
- translate(drow, dcol)[source]¶
Translates current VectorGeometry.
- Parameters
- Returns
VectorGeometry object
- Return type
- Usage Example
# Remember that VectorGeometry class object is immutable, and we need to assign new instance of VectorGeometry to a new variable translate_figure = figure.translate(150, 250)
- property area¶
- Returns
float
- property exterior¶
VectorGeometry exterior points.
- Returns
VectorGeometry exterior points
- Return type
- Usage example
exterior = figure.exterior
- property exterior_np¶
Converts exterior attribute of VectorGeometry to numpy array.
- Returns
Numpy array
- Return type
np.ndarray
- Usage example
print(figure.exterior_np) # Output: # [[ 730 2104] # [2479 402] # [3746 1646]]
- property interior¶
VectorGeometry interior points.
- Returns
VectorGeometry interior points
- Return type
- Usage example
interior = figure.interior
- property interior_np¶
Converts interior attribute of VectorGeometry to numpy array.
- Returns
Numpy array
- Return type
List[np.ndarray]
- Usage example
print(figure.interior_np) # Output: # [array([[1907, 1255], # [2468, 875], # [2679, 1577]])]