Exemple #1
0
        internal bool SearchImageFromDict(Dictionary <string, Bitmap> buttonImages, out Point centerPoint, out string name)
        {
            window = autoIt.window;
            double threshold = 0.85;

            name        = null;
            centerPoint = new OpenCvSharp.Point();

            gameScreen_graphics.CopyFromScreen(window.X, window.Y, 0, 0, size_region);
            using Mat result     = new Mat();
            using Mat gameScreen = OpenCvSharp.Extensions.BitmapConverter.ToMat(gameScreen_bitmap);       //Сохраняем скрин экрана в mat
            using Mat mat_region_desktop_gray = gameScreen.CvtColor(ColorConversionCodes.BGR2GRAY);

            foreach (KeyValuePair <string, Bitmap> buttonImage in buttonImages)
            {
                using Mat searchImg      = OpenCvSharp.Extensions.BitmapConverter.ToMat(buttonImage.Value);
                using Mat searchImg_gray = searchImg.CvtColor(ColorConversionCodes.BGR2GRAY);

                Cv2.MatchTemplate(mat_region_desktop_gray, searchImg_gray, result, TemplateMatchModes.CCoeffNormed);                     //Поиск шаблона
                Cv2.Threshold(result, result, threshold, 1.0, ThresholdTypes.Tozero);
                Cv2.MinMaxLoc(result, out double minVal, out double maxVal, out OpenCvSharp.Point minLoc, out OpenCvSharp.Point maxLoc); //Поиск точки
                if (maxVal > threshold)
                {
                    centerPoint = new OpenCvSharp.Point(maxLoc.X + buttonImage.Value.Width / 2, maxLoc.Y + buttonImage.Value.Height / 2);
                    overlay.DrawRect(maxLoc.X, maxLoc.Y, buttonImage.Value.Width, buttonImage.Value.Height);
                    name = buttonImage.Key;
                    return(true);
                }
            }

            return(false);
        }
Exemple #2
0
 private void UpdateTowerZone()
 {
     images.gameImages.TryGetValue("Tower", out Bitmap bitmap);
     if (openCV.SearchImageFromRegion(bitmap, out Point p, new Point(300, 40), new Point(1220, 600)))
     {
         Color color = autoIt.IntToColor(autoIt.au3.PixelGetColor(p.X + 13 + autoIt.window.X, p.Y + 10 + autoIt.window.Y));
         if (color.R > 150 && color.G > 150 && color.B < 150)
         {
             overlay.DrawText("TowerZone!", 40, 680);
             overlay.DrawRect(p.X - 10, p.Y - 10, 46, 46);
             TowerZone = true;
         }
     }