Drawing Canvas & Text Rendering ​
Drawing shapes and rendering text onto frames is useful for displaying visualization boxes, showing tracking overlays, and labeling image outputs.
Basic Geometric Shapes ​
All drawing functions operate directly on the Image struct (manipulating internal pixel bytes on the CPU and returning the modified frame).
Lines ​
Draws a straight line from p1 to p2 with a specified Scalar color.
let p1 = Point::new(10, 10);
let p2 = Point::new(390, 10);
let color = Scalar::new(1.0, 0.0, 0.0, 0.0); // Red
let image = image.draw_line(p1, p2, color)?;Rectangles ​
Draws a rectangle with the specified borders or fills it.
let rect = Rect::new(50, 50, 100, 100);
let color = Scalar::new(0.0, 1.0, 0.0, 0.0); // Green
// Draw with thickness = 2
let image = image.draw_rectangle(rect, color, 2)?;
// Draw a filled rectangle with thickness = -1
let image = image.draw_rectangle(rect, color, -1)?;Circles ​
Draws a circle around a center point with a given radius.
let center = Point::new(200, 150);
let radius = 40;
let color = Scalar::new(0.0, 0.0, 1.0, 0.0); // Blue
// Draw a filled circle
let image = image.draw_circle(center, radius, color, -1)?;Ellipses ​
Draws an ellipse with configurable rotation and angle range.
let center = Point::new(300, 200);
let axes = (50, 30); // semi-major, semi-minor
let color = Scalar::new(1.0, 1.0, 0.0, 0.0); // Yellow
// Draw a filled ellipse
let image = image.draw_ellipse(center, axes, 30.0, 0.0, 360.0, color, -1)?;Polygons & Arrows ​
Polyline ​
Draws connected line segments.
let points = vec![
Point::new(10, 10),
Point::new(50, 10),
Point::new(50, 50),
Point::new(10, 50),
Point::new(10, 10),
];
let image = image.draw_polyline(&points, Scalar::all(1.0), 1)?;Filled Polygon ​
Fills a closed polygon region using scanline fill.
let points = vec![
Point::new(100, 100),
Point::new(200, 100),
Point::new(150, 150),
];
let image = image.fill_poly(&points, Scalar::all(0.5))?;Arrowed Line ​
Draws a line with an arrowhead.
let image = image.draw_arrowed_line(
Point::new(10, 10),
Point::new(100, 80),
Scalar::all(1.0),
1,
0.3, // tip_length ratio
)?;Markers ​
Draws a marker symbol at a point.
let image = image.draw_marker(Point::new(50, 50), Scalar::all(1.0), MarkerType::Cross, 10)?;
let image = image.draw_marker(Point::new(50, 50), Scalar::all(1.0), MarkerType::Circle, 10)?;
let image = image.draw_marker(Point::new(50, 50), Scalar::all(1.0), MarkerType::Diamond, 10)?;Available marker types: Cross, TiltedCross, Diamond, Square, Circle, Filled.
Rendering Text ​
Iris contains a lightweight, built-in 5x7 bitmap font (FONT_5X7) to render standard ASCII labels onto images directly, eliminating the need to link external system font files.
let org = Point::new(50, 250);
let scale = 2;
let color = Scalar::all(1.0); // White text
let image = image.draw_text("Iris library", org, scale, color)?;