shapes: 2D shapes drawing#
This module provides functions making masks on an image.
- circle_fill()function generates coordinates of a circle in an image.
- draw_line()function generates coordinates of a line in an image.
- polygon_fill_mask()function generates a mask from a set of points defining a polygon.
The Polygon class provides checking if a point is inside a polygon.
The whole module uses the (row, col) (i.e., (y, x))) convention for 2D coordinates.
- circle_fill(int crow, int ccol, float radius)#
- Generates coordinate of image points lying in a disk. - Parameters:
- crow (int) – Row of the center of the disk 
- ccol (int) – Column of the center of the disk 
- radius (float) – Radius of the disk 
 
- Returns:
- Array coordinates of points inside the disk (might be negative) 
- Return type:
- 2-tuple of numpy.ndarray (rows, cols) 
 
- ellipse_fill(int crow, int ccol, float radius_r, float radius_c)#
- Generates coordinate of image points lying in a ellipse. - Parameters:
- crow (int) – Row of the center of the ellipse 
- ccol (int) – Column of the center of the ellipse 
- radius_r (float) – Radius of the ellipse in the row 
- radius_c (float) – Radius of the ellipse in the column 
 
- Returns:
- Array coordinates of points inside the ellipse (might be negative) 
- Return type:
- 2-tuple of numpy.ndarray (rows, cols) 
 
- draw_line(int row0, int col0, int row1, int col1, int width=1)#
- Line includes both end points. Width is handled by drawing parallel lines, so junctions of lines belonging to different octant with width > 1 will not look nice. - Using Bresenham line algorithm: Bresenham, J. E. Algorithm for computer control of a digital plotter. IBM Systems Journal. Vol 4 No 1. 1965. pp 25-30 - Parameters:
- row0 (int) – Start point row 
- col0 (int) – Start point col 
- row1 (int) – End point row 
- col1 (int) – End point col 
- width (int) – Thickness of the line in pixels (default 1) Width must be at least 1. 
 
- Returns:
- Array coordinates of points inside the line (might be negative) 
- Return type:
- 2-tuple of numpy.ndarray (rows, cols) 
 
- polygon_fill_mask(vertices, shape)#
- Return a mask of boolean, True for pixels inside a polygon. - Parameters:
- vertices (numpy.ndarray like container of dimension Nx2) – Strip of segments end points (row, column) or (y, x) 
- shape (2-tuple of int) – size of the mask as (height, width) 
 
- Returns:
- Mask corresponding to the polygon 
- Return type:
- numpy.ndarray of dimension shape 
 
- class Polygon(vertices)#
- Define a polygon that provides inside check and mask generation. - Parameters:
- vertices (Nx2 array of floats of (row, col)) – corners of the polygon 
 - is_inside(self, row, col)#
- Check if (row, col) is inside or outside the polygon - Parameters:
- row (float) 
- col (float) 
 
- Returns:
- True if position is inside polygon, False otherwise 
 
 - make_mask(self, int height, int width)#
- Create a mask array representing the filled polygon - Parameters:
- height (int) – Height of the mask array 
- width (int) – Width of the mask array 
 
- Returns:
- 2D array (height, width) 
 
 
