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); }
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)); }
public BitmapTabViewModel(ControllerModel controller) : base(controller) { _FloodFiller = new QueueLinearFloodFiller(null); }