Esempio n. 1
0
        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");
 }
Esempio n. 3
0
 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;
 }
Esempio n. 6
0
 //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();
            }
        }