Лучший способ сканировать и сравнивать изображения в режиме реального времени - PullRequest
0 голосов
/ 19 февраля 2019

нужна ваша помощь.Например, я игра HV.Это 500x500 пикселей.показывает случайные картинки.Когда появляется определенная фотография улыбающейся собаки, вам нужно нажать пробел в течение 1 секунды.

Предположим, что у нас уже есть это конкретное изображение улыбающейся собаки в памяти (давайте назовем его целевым изображением с этого момента)И все, что осталось, это просто сравнить сканированное изображение с целевым.Поэтому нам нужно: отсканировать эту область 500x500 в режиме реального времени (один-десять раз в секунду) и сравнить результат сканирования с целевым изображением, а затем выполнить некоторые действия в зависимости от результата сравнения.Мне нужно сделать это как можно быстрее, надежнее и эффективнее (с точки зрения вычислительной мощности).

Также мне нужно иметь возможность перемещать окно с игрой, чтобы оно не тормозило захват экрана (янужен скриншот для привязки к окну игры, а не к целому экрану)

Итак, что вы посоветуете для обработки сканирования и сравнительных этапов этой программы самым быстрым, самым надежным и наиболее эффективным способом?

/ * РЕДАКТИРОВАТЬ: я думаю, что мне нужно использовать OpenCV для сканирования экрана и сравнения.Но какой язык будет предпочтительнее с точки зрения скорости и эффективного распределения вычислительной мощности?C ++ или Python?* /

Также мне нужно, чтобы эта программа работала в Windows и Mac OS в будущем, на данный момент это всего лишь Windows.

Ты заранее.

/ * РЕДАКТИРОВАТЬ: ЧтоВы, ребята, думаете об этом методе: пусть наше изображение результата сканирования будет «X», и пусть наше целевое изображение (изображение, которое у нас уже есть «изображение улыбающейся собаки» и хотим, чтобы наш X был идентичен этому изображению) было «Y»».Сначала мы уменьшаем Y с 500x500 до 50x50, затем уменьшаем X с 500x500 до 50x50, затем переводим оба изображения в оттенки серого.А затем выполните нормализацию суммы квадратов диферена или даже нормализованную перекрестную корреляцию, чтобы обнаружить сходства между X и Y. Что вы думаете?Будет ли это быстрее, чем мое предложение:

{уменьшить отснятое изображение до 50x50 пикселей.Затем сравнивайте каждый 25-й пиксель один за другим постепенно (если 1-й пиксель такой же, как на целевом изображении - переходите к следующему пикселю. Если нет - дождитесь следующего события сканирования и повторите сканирование первого пикселя), чтобы получить уменьшенное изображение целевого изображения.Если все пиксели одинаковы - значит, мы хороши, и мы нашли именно эту картинку.} * /

...