Author Topic: Поиск картинки.  (Read 4879 times)

0 Members and 1 Guest are viewing this topic.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Поиск картинки.
« Reply #15 on: May 01, 2017, 08:07:41 PM »
Ну в справке же все написано
Quote
Для того что бы участок признался подходящим, необходимо 100% соответствие пикселей bmp-файла и текущего снимка экрана. Или же можно задать цвет фона изображения, который не будет учитываться при поиске на экране. Если цвет фона не задан, изображение ищется с учетом всех пикселей
Так же можно задать не 100% совпадение. Для этого укажите в параметре currency необходимую точность. Этот параметр определяет на какое от общего числа количество несовпавших пикселей программа "закроет глаза". Однако имейте ввиду, что чем ниже значение точности, тем дольше идет поиск
Если параметр currency не задан, по умолчанию он равен 100. Если параметр bgcolor не задан, по умолчанию он равен -1. Если есть необходимость задать точность, не задавая фон, сделайте bgcolor равным -1
Входные файлы для анализа должны находиться в директории проекта, быть формта BMP и иметь стандартную разрядность 24 бита. В случае использования цветокоррекции, входной файл должен быть уже откорректирован. Чтобы добиться этого результата, выполните код ниже (подставив нужный код для colormode), затем вырежьте нужный участок картинки в каком-нибудь редакторе. Скриншот должен быть в BMP

Кликер делает снимок GETSCREEN, и сравнивает функцией IF_PICTURE_IN каждый пиксел из BMP картинки с пикселами на экране.

При чем тут исходный код? Картинки масштабируются, сглаживаются и тд.
В системах выше XP сглаживание меняет пикселы в окнах, браузере каждый раз по разному. Достаточно переоткрыть окно и пикселы могут быть смазаны по другому. В настройках винды можно это сглаживание отключить.

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

снимок с цветокоррекцией делается таким скриптом
Code: (clickermann) [Select]
// Получение скриншота с цветокоррекцией (фильтр 6)
GETSCREEN
COLORMODE(6) // можно попробовать значения от 5 до 8
SCREENSHOT
HALT

снимок сохраняется в папку screens в рабочую папку скрипта (см. в заголовке редактора)

В своем скрипте также используем цветокоррекцию
Code: (clickermann) [Select]
GETSCREEN // снимок
COLORMODE(6) // цветокоррекция снимка
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 60) // поиск с 60% совпадением
   LCLICK($_return1, $_return2)
   WAITMS(100)
END_IF