Core image relatad methods.
All methods of this class are static and represent general routines used by different image processing classes.
Пример #1
0
        public static MedalType DetermineMedalOnCard(Bitmap card)
        {
            ExhaustiveTemplateMatching tm = new ExhaustiveTemplateMatching(0);

            var goldSimilarity = tm.ProcessImage(card, Image.FromFile("TemplateImages/gold_medal.png"), new Rectangle(80, 40, 200, 200))[0].Similarity;

            if (goldSimilarity > 0.95f)
            {
                return(MedalType.Gold);
            }

            var silverSimilarity = tm.ProcessImage(card, Image.FromFile("TemplateImages/silver_medal.png"), new Rectangle(80, 40, 200, 200))[0].Similarity;

            if (silverSimilarity > 0.95f)
            {
                return(MedalType.Silver);
            }

            var bronzeSimilarity = tm.ProcessImage(card, Image.FromFile("TemplateImages/bronze_medal.png"), new Rectangle(80, 40, 200, 200))[0].Similarity;

            if (bronzeSimilarity > 0.95f)
            {
                return(MedalType.Bronze);
            }

            var noMedalSimilarity = tm.ProcessImage(card, Image.FromFile("TemplateImages/no_medal.png"), new Rectangle(80, 40, 200, 200))[0].Similarity;

            if (noMedalSimilarity > 0.95f)
            {
                return(MedalType.None);
            }

            return(MedalType.Uncertain);
        }
Пример #2
0
        public static GameResult DetermineGameResult(Bitmap screenshot)
        {
            ExhaustiveTemplateMatching tm = new ExhaustiveTemplateMatching(0);

            if (screenshot.PixelFormat != PixelFormat.Format24bppRgb)
            {
                screenshot = screenshot.To24Bpp();
            }
            var win = tm.ProcessImage(screenshot, Image.FromFile("assets/victory_template.png"), new Rectangle(60, 50, 315, 80))[0].Similarity;

            if (win > 0.92f)
            {
                return(GameResult.Victory);
            }

            var defeat = tm.ProcessImage(screenshot, Image.FromFile("assets/defeat_template.png"), new Rectangle(60, 50, 265, 80))[0].Similarity;

            if (defeat > 0.92f)
            {
                return(GameResult.Defeat);
            }

            var draw = tm.ProcessImage(screenshot, Image.FromFile("assets/draw_template.png"), new Rectangle(60, 50, 265, 80))[0].Similarity;

            if (draw > 0.92f)
            {
                return(GameResult.Draw);
            }

            return(GameResult.Uncertain);
        }
        public ImageTransformation(string fileName)
        {
            this.image = Image.FromFile(fileName);


            //TODO: Threshold will probably be needed for noisy images
            //var thresholdFilter = new Threshold(100);
            //thresholdFilter.ApplyInPlace(image);
            //var invertFilter = new Invert();
            //var invertedImage = invertFilter.Apply(image);
        }
 public static Bitmap OpenImage(this TextStructure filePath)
 {
     try
     {
         using (var bitmap = new Bitmap(filePath.Value))
         {
             return(Image.Clone(bitmap, PixelFormat.Format24bppRgb));
         }
     }
     catch (Exception ex)
     {
         throw new Exception($"Could not open the image file '{filePath.Value}'. Message: {ex.Message}", ex);
     }
 }
 /// <summary>
 /// Process image looking for corners.
 /// </summary>
 /// <param name="cornerDetector">Corner detection algorithm instance.</param>
 /// <param name="image">Source image to process.</param>
 /// <returns>Returns list of found corners (X-Y coordinates).</returns>
 public static List<Point> ProcessImage(this ICornersDetector cornerDetector, Image<Gray, byte> image)
 {
     return cornerDetector.ProcessImage(image.ToAForgeImage(copyAlways: false, failIfCannotCast: true));
 }
Пример #6
0
        private static readonly double _pokemonCardRatio = 63.0 / 88; // Width / Height

        public static Bitmap Format(Bitmap bitmap)
        {
            return(Image.Clone(bitmap, PixelFormat.Format24bppRgb));
        }