Polygon¶
- class Polygon[source]¶
Bases:
supervisely.geometry.vector_geometry.VectorGeometry
Polygon geometry for a single
Label
.Polygon
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.
- interior : List[List[PointLocation]], List[List[List[int, int]]], List[List[Tuple[int, int]]]
Interior coordinates, object holes are defined with these points.
- sly_id : int, optional
Polygon ID in Supervisely server.
- class_id : int, optional
ID of
ObjClass
to which Polygon belongs.- labeler_login : str, optional
Login of the user who created Polygon.
- updated_at : str, optional
Date and Time when Polygon 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 Polygon was created. Date Format is the same as in “updated_at” parameter.
- Raises
ValueError
, if len(exterior) < 3 or len(any element in interior list) < 3- 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
Approximates a Polygon curve with the specified precision.
Clone from GEOMETRYYY
config_from_json
config_to_json
convert
Crops current Polygon.
- 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.
Convert a json dict to Polygon.
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
Polygon area.
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)[source]¶
Crops current Polygon.
- Parameters
- rect : Rectangle
Rectangle object for crop.
- Returns
List of Polygon objects
- Return type
- Usage Example
import supervisely as sly crop_figures = figure.crop(sly.Rectangle(1, 1, 300, 350))
-
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)¶
Flips current VectorGeometry in horizontal.
- Parameters
- Returns
VectorGeometry object
- Return type
VectorGeometry
- 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)¶
Flips current VectorGeometry in vertical.
- Parameters
- Returns
VectorGeometry object
- Return type
VectorGeometry
- 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)[source]¶
Convert a json dict to Polygon. Read more about Supervisely format.
- Parameters
- data : dict
Polygon in json format as a dict.
- Returns
Polygon object
- Return type
- Usage example
import supervisely as sly figure_json = { "points": { "exterior": [ [2104, 730], [402, 2479], [1646, 3746] ], "interior": [ [ [1255, 1907], [875, 2468], [577, 2679] ] ] } } figure = sly.Polygon.from_json(figure_json)
- 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)¶
Resizes current VectorGeometry.
- Parameters
- Returns
VectorGeometry object
- Return type
VectorGeometry
- 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)¶
Rotates current VectorGeometry.
- Parameters
- rotator : ImageRotator
ImageRotator object for rotate.
- Returns
VectorGeometry object
- Return type
VectorGeometry
- 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)¶
Scales current VectorGeometry.
- Parameters
- factor : float
Scale parameter.
- Returns
VectorGeometry object
- Return type
VectorGeometry
- 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()¶
Creates Rectangle object from current VectorGeometry.
- Returns
Rectangle object
- Return type
- Usage Example
rectangle = figure.to_bbox()
- to_json()¶
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)¶
Translates current VectorGeometry.
- Parameters
- Returns
VectorGeometry object
- Return type
VectorGeometry
- 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¶
Polygon area.
- Returns
Area of current Polygon object (exterior figure only).
- Return type
- Usage Example
print(figure.area) # Output: 7288.0
- 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]])]