private Image <Gray, byte> DetectionImage(Image <Bgr, byte> sourceImg, bool debugMode = false) { Image <Hsv, byte> img = sourceImg.Convert <Hsv, byte>(); Image <Gray, byte> blue = ImageTools.FilterColor(img, new Hsv(90, 90, 50), new Hsv(120, 255, 255)); Image <Gray, byte> green = ImageTools.FilterColor(img, new Hsv(35, 70, 35), new Hsv(90, 255, 255)); Image <Gray, byte> yellow = ImageTools.FilterColor(img, new Hsv(10, 70, 127), new Hsv(35, 255, 255)); Image <Gray, byte> red = ImageTools.FilterColor( img, new KeyValuePair <Hsv, Hsv>[] { new KeyValuePair <Hsv, Hsv>(new Hsv(0, 85, 80), new Hsv(12, 255, 255)), new KeyValuePair <Hsv, Hsv>(new Hsv(150, 85, 80), new Hsv(179, 255, 255)) } ); DetectionData ddb = ImageTools.DetectSquares(blue, debugMode ? "Blue Debug Window" : ""); DetectionData ddr = ImageTools.DetectSquares(red, debugMode ? "Red Debug Window" : ""); DetectionData ddg = ImageTools.DetectSquares(green, debugMode ? "Green Debug Window" : ""); DetectionData ddy = ImageTools.DetectSquares(yellow, debugMode ? "Yellow Debug Window" : ""); ddb.RemoveNoises(); ddr.RemoveNoises(); ddg.RemoveNoises(); ddy.RemoveNoises(); ddb.AddColor(ddr); ddb.AddColor(ddg); ddb.AddColor(ddy); return(ddb.DrawDetection().Convert <Gray, byte>()); }
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(); } }
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 BoardButton_Click(object sender, RoutedEventArgs e) { string[] args = Environment.GetCommandLineArgs(); Image <Hsv, byte> img = new Image <Hsv, byte>(args[1]); Image <Gray, byte> blue = ImageTools.FilterColor(img, new Hsv(90, 90, 50), new Hsv(120, 255, 255)); Image <Gray, byte> green = ImageTools.FilterColor(img, new Hsv(35, 70, 35), new Hsv(90, 255, 255)); Image <Gray, byte> yellow = ImageTools.FilterColor(img, new Hsv(10, 70, 127), new Hsv(35, 255, 255)); Image <Gray, byte> red = ImageTools.FilterColor( img, new KeyValuePair <Hsv, Hsv>[] { new KeyValuePair <Hsv, Hsv>(new Hsv(0, 85, 80), new Hsv(12, 255, 255)), new KeyValuePair <Hsv, Hsv>(new Hsv(150, 85, 80), new Hsv(179, 255, 255)) } ); DetectionData ddb = ImageTools.DetectSquares(blue); DetectionData ddr = ImageTools.DetectSquares(red); DetectionData ddg = ImageTools.DetectSquares(green); DetectionData ddy = ImageTools.DetectSquares(yellow); ddb.RemoveNoises(); ddr.RemoveNoises(); ddg.RemoveNoises(); ddy.RemoveNoises(); ddb.AddColor(ddr); ddb.AddColor(ddg); ddb.AddColor(ddy); var board = ddb.CreateBoard(); var di = ddb.DrawDetection().Bitmap; MessageBox.Show("Detected board: " + board.Height + "x" + board.Width); ImageTools.ShowInNamedWindow(img.Convert <Bgr, byte>(), "Original"); }