예제 #1
0
        private Image <Rgba32> PreProcessPokemonInfo(Image <Rgba32> imageFragment, RaidImageFragmentType imageFragmentType)
        {
            const byte floodFillLetterTolerance = 10;
            var        floodFillLetters         = new QueueLinearFloodFiller
            {
                Bitmap    = imageFragment,
                FillColor = Rgba32.Black,
                Tolerance =
                {
                    [0] = floodFillLetterTolerance,
                    [1] = floodFillLetterTolerance,
                    [2] = floodFillLetterTolerance
                }
            };
            var borderColor = PokemonNameBorderColor;

            foreach (var encapsulatedPixel in GetEncapsulatedPixels(imageFragment, TextColor, borderColor, 30))
            {
                floodFillLetters.FloodFill(encapsulatedPixel);
            }

            if (SaveDebugImages)
            {
                imageFragment.Save($"_{imageFragmentType}_Step1_FloodFillLetters.png");
            }

            imageFragment.Mutate(m => m.BinaryThreshold(0.01f).Invert());

            if (SaveDebugImages)
            {
                imageFragment.Save($"_{imageFragmentType}_Step2_Binary.png");
            }

            const byte floodFillBorderTolerance = 1;
            var        floodFillBorders         = new QueueLinearFloodFiller
            {
                Bitmap    = imageFragment,
                FillColor = Rgba32.Black,
                Tolerance =
                {
                    [0] = floodFillBorderTolerance,
                    [1] = floodFillBorderTolerance,
                    [2] = floodFillBorderTolerance
                }
            };

            foreach (var point in PixelsWithColorAtBorder(imageFragment, TextColor))
            {
                floodFillBorders.FloodFill(point);
            }

            imageFragment.Mutate(m => m.Invert());

            if (SaveDebugImages)
            {
                imageFragment.Save($"_{imageFragmentType}_Step3_BlackBorderEntriesRemoved.png");
            }

            return(imageFragment);
        }
예제 #2
0
        public BitmapTabViewModel() : base()
        {
            _FloodFiller = new QueueLinearFloodFiller(null);

            Messenger.Default.Register(this, new Action <ControllerFileNameChangedMessage>(OnFileNameChanged));
            Messenger.Default.Register(this, new Action <RefreshBitmapRequest>(OnRefreshBitmapRequest));
            Messenger.Default.Register(this, new Action <FasenChangedMessage>(OnFasenChanged));
            Messenger.Default.Register(this, new Action <DetectorenChangedMessage>(OnDetectorenChanged));
            Messenger.Default.Register(this, new Action <OVIngrepenChangedMessage>(OnOVIngrepenChanged));
        }
예제 #3
0
 public BitmapTabViewModel(ControllerModel controller) : base(controller)
 {
     _FloodFiller = new QueueLinearFloodFiller(null);
 }