Обратный поиск изображений - PullRequest
0 голосов
/ 12 июля 2020

Есть ли способы отменить поиск изображений? Вместо того, чтобы сканировать сверху-слева в нижний правый, начните с нижнего левого угла в верхний-правый?

Вот как я сканирую изображение

            for (int y = 0; y < matches.GetLength(0); y++)
            {
                for (int x = 0; x < matches.GetLength(1); x++)
                {
                    double matchScore = matches[y, x, 0];
                    if (matchScore > threshold)
                    {
                        Console.WriteLine("There is a Match");
                        Console.WriteLine($"Coords: {x},{y}");
                        return new Point(x, y);
                    }
                }
            }
            return new Point(-1, -1);

Я просто сканирую снимок экрана и нахожу совпадает с ним с помощью emgu.cv

Могу ли я отменить сканирование, начиная снизу, а не сверху?

Допустим, есть 2 совпадения в X100, Y100 и X350, Y350

он должен сканировать из X350 -> X100 вместо X100 -> X350 и, таким образом, возвращать X350, Y350

1 Ответ

0 голосов
/ 12 июля 2020

Вы можете написать:

for ( int y = matches.GetLength(0) - 1; y >= 0; y-- )
  for ( int x = matches.GetLength(1) - 1; x >= 0; x-- )
    if ( matches[y, x, 0] > threshold )
    {
      Console.WriteLine("There is a Match");
      Console.WriteLine($"Coords: {x},{y}");
      return new Point(x, y);
    }

Поскольку вы возвращаете первый найденный элемент, возможно, что этот l oop и ваш не найдут тот же результат, если, например, вы найдете первый элемент вверху, а этот внизу, поэтому вы возвращаете верхний элемент, а этот возвращает нижний элемент ...

Выбор направления al oop зависит от того, что вы хотите вернуть первым, из сверху вниз или снизу вверх и слева направо или справа налево.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...