using Hawkeye.VisionBuilder.Workflow; using Hawkeye.VisionBuilder.Workflow.Datatypes.Elements; using OpenCvSharp; namespace VisionBuilder.UI.Recipes.HawkeyeRecipe; public class OpenCVCanvas:ICanvas { private readonly Mat _image; public OpenCVCanvas(Mat image) { _image = image; } public void DrawRectangle(Vector2 start, Vector2 size, bool isGood) { _image.Rectangle( new Point(start.X, start.Y), new Point(start.X + size.X, start.Y + size.Y), isGood ? Scalar.Green : Scalar.Red, 2); } public void DrawLine(Vector2 start, Vector2 end, LineType type) { var color = type switch { LineType.Good => Scalar.Green, LineType.Bad => Scalar.Red, _ => Scalar.White }; _image.Line( new Point(start.X, start.Y), new Point(end.X, end.Y), color, 2); } public void DrawPoly(Vector2[] points, bool isGood) { var color = isGood ? Scalar.Green : Scalar.Red; var cvPoints = points.Select(p => new Point(p.X, p.Y)).ToArray(); _image.Polylines([cvPoints], true, color, 2); } public void DrawCross(Vector2 location) { } public void DrawNode(Vector2 location) { } public void DrawArrow(Vector2 location, Vector2 direction) { } }