public Board(Board source) { height = source.height; width = source.width; int arraySize = height * width; grid = new int[arraySize]; for (int i = 0; i < arraySize; i++) { grid[i] = source.grid[i]; } }
public Board CreateBoard() { var fullDetection = DrawDetection(); var sums = ImageTools.CalculateSums(fullDetection); List<Point> ColsRanges = ImageTools.ColorRanges(sums.Key, width); List<Point> RowsRanges = ImageTools.ColorRanges(sums.Value, height); int sizeY = ColsRanges.Count(); int sizeX = RowsRanges.Count(); if (sizeX < 1 || sizeY < 1) return null; Board board = new Board(sizeX, sizeY); int colorCounter = 0; var colors = Enum.GetValues(typeof(ColorIndex)).Cast<int>().Reverse().ToList(); foreach(var rectangleList in ColorBoundingRectangles) { foreach (var rectangle in rectangleList) { var position = FindPosition(rectangle, ColsRanges, RowsRanges); if (position.X > -1 && position.Y > -1) board[position.X, position.Y] = colors[colorCounter]; } colorCounter++; } return board; }
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(); } }