示例#1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="T:System.Object"/> class.
        /// </summary>
        /// <remarks></remarks>
        public TileOCR(string trainingPath)
        {
            classifier = new KNearestClassifier(1, Metric.EuclideanDistance, WeightMode.InverseDistance);
            training   = LoadInstancesFromBitmaps(trainingPath);

            classifier.Train(training);

            results = new List <OCRResult>();

            grayscale                = new Grayscale(0, 0.85, 0.15);
            invert                   = new Invert();
            resize                   = new ResizeNearestNeighbor(32, 32);
            floodFill                = new PointedColorFloodFill(Color.Black);
            dilate                   = new BinaryDilatation3x3();
            blobCounter              = new BlobCounter();
            blobCounter.FilterBlobs  = true;
            blobCounter.MinWidth     = 4;
            blobCounter.MinHeight    = 14;
            blobCounter.MaxWidth     = 30;
            blobCounter.MaxHeight    = 30;
            blobCounter.ObjectsOrder = ObjectsOrder.XY;
            threshold                = new BradleyLocalThresholding();
            threshold.PixelBrightnessDifferenceLimit = 0;
            //Threshold.WindowSize = 20;
            threshold.WindowSize = 24;
        }
示例#2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="T:System.Object"/> class.
 /// </summary>
 /// <remarks></remarks>
 public TileDetector()
 {
     median                   = new Median();
     blobCounter              = new BlobCounter();
     blobCounter.FilterBlobs  = true;
     blobCounter.MinWidth     = (int)Math.Ceiling(15f / scale);
     blobCounter.MinHeight    = (int)Math.Ceiling(15f / scale);
     blobCounter.ObjectsOrder = ObjectsOrder.XY;
     resize                   = new ResizeBilinear(640, 480);
     this.filteredBoard       = new Bitmap(640, 480);
     this.tileBlobs           = new List <Blob>();
 }
        public static IEnumerable<Blob> GetBlobs(Bitmap input, BlobCounterBase counter)
        {
            AForge.Imaging.Filters.Invert inv = new AForge.Imaging.Filters.Invert();

            if (!IsInvertedColor(input))
            {
                inv.ApplyInPlace(input);
            }

            counter.ProcessImage(input);
            return counter.GetObjects(input, false);
        }
示例#4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="T:System.Object"/> class.
 /// </summary>
 /// <remarks></remarks>
 public TileDetector()
 {
     median = new Median();
     blobCounter = new BlobCounter();
     blobCounter.FilterBlobs = true;
     blobCounter.MinWidth = (int)Math.Ceiling(15f / scale);
     blobCounter.MinHeight = (int)Math.Ceiling(15f / scale);
     blobCounter.ObjectsOrder = ObjectsOrder.XY;
     resize = new ResizeBilinear(640, 480);
     this.filteredBoard = new Bitmap(640, 480);
     this.tileBlobs = new List<Blob>();
 }
示例#5
0
        /// <summary>
        /// Initializes a new instance of the <see cref="T:System.Object"/> class.
        /// </summary>
        /// <remarks></remarks>
        public TileOCR(string trainingPath)
        {
            classifier = new KNearestClassifier(1, Metric.EuclideanDistance, WeightMode.InverseDistance);
            training = LoadInstancesFromBitmaps(trainingPath);
            
            classifier.Train(training);

            results = new List<OCRResult>();

            grayscale = new Grayscale(0, 0.85, 0.15);
            invert = new Invert();
            resize = new ResizeNearestNeighbor(32, 32);
            floodFill = new PointedColorFloodFill(Color.Black);
            dilate = new BinaryDilatation3x3();
            blobCounter = new BlobCounter();
            blobCounter.FilterBlobs = true;
            blobCounter.MinWidth = 4;
            blobCounter.MinHeight = 14;
            blobCounter.MaxWidth = 30;
            blobCounter.MaxHeight = 30;
            blobCounter.ObjectsOrder = ObjectsOrder.XY;
            threshold = new BradleyLocalThresholding();
            threshold.PixelBrightnessDifferenceLimit = 0;
            //Threshold.WindowSize = 20;
            threshold.WindowSize = 24;
        }