public static Board ReadFromFrame(Image <Bgr, byte> frame, FilteringParameters filteringParameters) { Image <Gray, byte>[] filtered = new Image <Gray, byte> [4]; DetectionData[] dds = new DetectionData[4]; Board board; var hsvImg = frame.Convert <Hsv, byte>(); for (int i = 0; i < 4; i++) { filtered[i] = ImageTools.FilterColor(hsvImg, filteringParameters.ColorsRanges[i]); dds[i] = ImageTools.DetectSquares(filtered[i]); dds[i].RemoveNoises(); filtered[i].Dispose(); } ; dds[0].AddColor(dds[1]); dds[0].AddColor(dds[2]); dds[0].AddColor(dds[3]); board = dds[0].CreateBoard(); if (board != null) { board.DetectRooms(); } return(board); }
public void AddColor(DetectionData dd) { ColorBoundingRectangles.AddRange(dd.ColorBoundingRectangles); if (this.height != dd.height) throw new ArgumentException("The added data have different image size!", "Height"); if (this.width != dd.width) throw new ArgumentException("The added data have different image size!", "Width"); }
public void AddColor(DetectionData dd) { ColorBoundingRectangles.AddRange(dd.ColorBoundingRectangles); if (this.height != dd.height) { throw new ArgumentException("The added data have different image size!", "Height"); } if (this.width != dd.width) { throw new ArgumentException("The added data have different image size!", "Width"); } }
public static Board ReadFromFrame(Image<Bgr, byte> frame, FilteringParameters filteringParameters) { Image<Gray, byte>[] filtered = new Image<Gray, byte>[4]; DetectionData[] dds = new DetectionData[4]; Board board; var hsvImg = frame.Convert<Hsv, byte>(); for (int i = 0; i < 4; i++) { filtered[i] = ImageTools.FilterColor(hsvImg, filteringParameters.ColorsRanges[i]); dds[i] = ImageTools.DetectSquares(filtered[i]); dds[i].RemoveNoises(); filtered[i].Dispose(); }; dds[0].AddColor(dds[1]); dds[0].AddColor(dds[2]); dds[0].AddColor(dds[3]); board = dds[0].CreateBoard(); if (board!=null) board.DetectRooms(); return board; }
//DetectionData(List<List<Rectangle> > colorRectangles) //{ // ColorBoundingRectangles.AddRange(colorRectangles); // CalculateMedianRectSize(); //} public DetectionData(DetectionData source) { ColorBoundingRectangles = new List<List<Rectangle>>(source.ColorBoundingRectangles); this.height = source.height; this.width = source.width; }
//DetectionData(List<List<Rectangle> > colorRectangles) //{ // ColorBoundingRectangles.AddRange(colorRectangles); // CalculateMedianRectSize(); //} public DetectionData(DetectionData source) { ColorBoundingRectangles = new List <List <Rectangle> >(source.ColorBoundingRectangles); this.height = source.height; this.width = source.width; }
private DetectionData PrepareDetectionDataExample() { var dd = new DetectionData(new Size(450,450)); dd.AddColor(new List<Rectangle> { new Rectangle(120, 10, 100, 100), new Rectangle(230, 10, 100, 100), new Rectangle(340, 230, 100, 100), new Rectangle(230, 340, 100, 100), new Rectangle(340, 340, 100, 100) }); dd.AddColor(new List<Rectangle> { new Rectangle(10, 120, 100, 100), new Rectangle(10, 230, 100, 100) }); dd.AddColor(new List<Rectangle> { new Rectangle(340, 10, 100, 100), new Rectangle(340, 120, 100, 100), new Rectangle(120, 230, 100, 100), new Rectangle(230, 230, 100, 100) }); dd.AddColor(new List<Rectangle> { new Rectangle(120, 120, 100, 100), new Rectangle(230, 120, 100, 100) }); return dd; }
private void UpdateImages(string path) { if (String.IsNullOrWhiteSpace(path)) sourceImg = new Image<Bgr, byte>(100, 100); else sourceImg = new Image<Bgr, byte>(imageFilePath); var hsvImg = sourceImg.Convert<Hsv, byte>(); blueImg = ImageTools.FilterColor(hsvImg, UserSettings.instance.blueMin, UserSettings.instance.blueMax); redImg = ImageTools.FilterColor(hsvImg, UserSettings.instance.RedRange); greenImg = ImageTools.FilterColor(hsvImg, UserSettings.instance.greenMin, UserSettings.instance.greenMax); yellowImg = ImageTools.FilterColor(hsvImg, UserSettings.instance.yellowMin, UserSettings.instance.yellowMax); composedImg = ImageTools.CombineMaps(new List<KeyValuePair<Image<Gray, byte>, Bgr>> { new KeyValuePair<Image<Gray, byte>, Bgr>(blueImg, ImageTools.Colors.Blue), new KeyValuePair<Image<Gray, byte>, Bgr>(redImg, ImageTools.Colors.Red), new KeyValuePair<Image<Gray, byte>, Bgr>(greenImg, ImageTools.Colors.Green), new KeyValuePair<Image<Gray, byte>, Bgr>(yellowImg, ImageTools.Colors.Yellow), }); if (operation == OperationType.Detection) { DetectionData ddb = ImageTools.DetectSquares(blueImg); DetectionData ddr = ImageTools.DetectSquares(redImg); DetectionData ddg = ImageTools.DetectSquares(greenImg); DetectionData ddy = ImageTools.DetectSquares(yellowImg); ddb.RemoveNoises(); ddr.RemoveNoises(); ddg.RemoveNoises(); ddy.RemoveNoises(); DetectionData common = new DetectionData(ddb); common.AddColor(ddr); common.AddColor(ddg); common.AddColor(ddy); composedImg = common.DrawDetection().Convert<Bgr,byte>(); blueImg = ddb.DrawDetection(); redImg = ddr.DrawDetection(); greenImg = ddg.DrawDetection(); yellowImg = ddy.DrawDetection(); this.board = common.CreateBoard(); } }