Findimage: различия между версиями

Материал из UoPilot
Перейти к навигации Перейти к поиску
(Новая страница: « == Описание == '''FindImage''' - оператор поиска сохраненного изображения в области заданной нач...»)
 
 
Строка 2: Строка 2:
 
== Описание ==
 
== Описание ==
 
'''FindImage''' - оператор поиска сохраненного изображения в области заданной начальными и конечными координатами по оси XY.
 
'''FindImage''' - оператор поиска сохраненного изображения в области заданной начальными и конечными координатами по оси XY.
<br>
+
<br>
&lt;br>Формат картинки должен быть: '''bmp 24 бита.''' &lt;br>Цвет крайнего пикселя в левом верхнем углу изображения считается "цветом фона", и при поиске картинки на экране не учитывается. Например, цвет этого пикселя красный (255). В этом случае все пиксели красного цвета присутствующие на искомой картинке будут считаться фоновыми (прозрачными) и не будут сравниваться с тем, что присутствует на экране. Поэтому, нельзя чтобы в файле-картинке все пиксели были одного цвета. Нужно сделать, чтобы хотя бы один левый верхний пиксель цветом отличался от остальных.
+
<br>Формат картинки должен быть: '''bmp 24 бита.''' <br>Цвет крайнего пикселя в левом верхнем углу изображения считается "цветом фона", и при поиске картинки на экране не учитывается. Например, цвет этого пикселя красный (255). В этом случае все пиксели красного цвета присутствующие на искомой картинке будут считаться фоновыми (прозрачными) и не будут сравниваться с тем, что присутствует на экране. Поэтому, нельзя чтобы в файле-картинке все пиксели были одного цвета. Нужно сделать, чтобы хотя бы один левый верхний пиксель цветом отличался от остальных.
  
 
== Синтаксис ==
 
== Синтаксис ==
  
 
Привязка к окну: опционально.
 
Привязка к окну: опционально.
&lt;br>Работа со свернутым окном: нет.
+
<br>Работа со свернутым окном: нет.
&lt;br>Работа с перекрытым окном: Да. Привязка к окну обязательна. Aero (темы Windows) должен быть включен. Если был установлен Астер, то он должен быть отключен, а система перезагружена.
+
<br>Работа с перекрытым окном: Да. Привязка к окну обязательна. Aero (темы Windows) должен быть включен. Если был установлен Астер, то он должен быть отключен, а система перезагружена.
 
  set #a FindImage (#StartX #StartY #EndX #EndY ($filename) %ResultArray [#type [#accuracy [#count [#deviation]]]] [abs])
 
  set #a FindImage (#StartX #StartY #EndX #EndY ($filename) %ResultArray [#type [#accuracy [#count [#deviation]]]] [abs])
 
Где:
 
Где:
&lt;br>'''&lt;#a>''' - переменная, в которую записывается результат работы команды findimage:
+
<br>'''<#a>''' - переменная, в которую записывается результат работы команды findimage:
&lt;br>Если #a = 0, значит поиск был произведён, но картинка не найдена.
+
<br>Если #a = 0, значит поиск был произведён, но картинка не найдена.
&lt;br>Если найдена только 1 картинка, то будет записан процент точности найденного изображения.
+
<br>Если найдена только 1 картинка, то будет записан процент точности найденного изображения.
&lt;br>Если найдено несколько картинок, то будет записано количество найденных изображений.
+
<br>Если найдено несколько картинок, то будет записано количество найденных изображений.
&lt;br>Однозначно определить сколько именно картинок было найдено командой FindImage лучше всего по размеру массива %ResultArray с помощью функции Size(%ResultArray).
+
<br>Однозначно определить сколько именно картинок было найдено командой FindImage лучше всего по размеру массива %ResultArray с помощью функции Size(%ResultArray).
&lt;br>#a &lt; 0 означает, что FindImage не смог произвести поиск- либо была обнаружена ошибка в написании параметров команды, либо проблемы с самим файлом картинки.
+
<br>#a < 0 означает, что FindImage не смог произвести поиск- либо была обнаружена ошибка в написании параметров команды, либо проблемы с самим файлом картинки.
&lt;br>Если #a = -4, значит файл картинки не найден / в неправильном формате / повреждён / все пиксели файла одного цвета. Чаще всего- путь к файлу указан неправильно.
+
<br>Если #a = -4, значит файл картинки не найден / в неправильном формате / повреждён / все пиксели файла одного цвета. Чаще всего- путь к файлу указан неправильно.
&lt;br>'''&lt;#StartX #StartY>''' - координаты левого верхнего угла области поиска.
+
<br>'''<#StartX #StartY>''' - координаты левого верхнего угла области поиска.
&lt;br>'''&lt;#EndX #EndY>''' - координаты правого нижнего угла области поиска.
+
<br>'''<#EndX #EndY>''' - координаты правого нижнего угла области поиска.
&lt;br>'''&lt;($filename)>''' - путь к сохранённому изображению (только файл формата bmp). Путь к изображению может быть указан как '''абсолютный''' - (C:\programms\pilot\images\), так '''и относительный''' - (images\). Указывается в круглых скобках. При использовании пробелов в адресе используйте кавычки либо строковую переменную(например $myPatch), предварительно присвоив ей(переменной) необходимый адрес.
+
<br>'''<($filename)>''' - путь к сохранённому изображению (только файл формата bmp). Путь к изображению может быть указан как '''абсолютный''' - (C:\programms\pilot\images\), так '''и относительный''' - (images\). Указывается в круглых скобках. При использовании пробелов в адресе используйте кавычки либо строковую переменную(например $myPatch), предварительно присвоив ей(переменной) необходимый адрес.
&lt;br>'''&lt;%ResultArray>''' - результирующий массив, в который записываются координаты изображения. Координатами изображения считается пиксель левого верхнего угла изображения. Если найдено несколько изображений, то координаты всех найденных изображений. Каждая строка массива хранится данные по отдельному найденному изображению: в первой колонке- координата X, во второй колонке- координата Y.
+
<br>'''<%ResultArray>''' - результирующий массив, в который записываются координаты изображения. Координатами изображения считается пиксель левого верхнего угла изображения. Если найдено несколько изображений, то координаты всех найденных изображений. Каждая строка массива хранится данные по отдельному найденному изображению: в первой колонке- координата X, во второй колонке- координата Y.
&lt;br>'''[#type]''' - тип поиска. Может принимать значения: '''1''' (надежный), '''2''' (быстрый). Настоятельно рекомендуется использовать быстрый способ поиска, кроме случаев с некорректным обнаружением изображения. По умолчанию 2й тип поиска.
+
<br>'''[#type]''' - тип поиска. Может принимать значения: '''1''' (надежный), '''2''' (быстрый). Настоятельно рекомендуется использовать быстрый способ поиска, кроме случаев с некорректным обнаружением изображения. По умолчанию 2й тип поиска.
&lt;br>'''[#accuracy]''' - точность поиска. Указывается в процентах. Используется для отсева изображений не достаточно схожих с оригиналом. По умолчанию значение равно 80%.
+
<br>'''[#accuracy]''' - точность поиска. Указывается в процентах. Используется для отсева изображений не достаточно схожих с оригиналом. По умолчанию значение равно 80%.
&lt;br>'''[#count]''' - ограничение количества найденных изображений. По умолчанию установлено для одного изображения - значение '''1''', для всех возможных - значение '''-1'''.  
+
<br>'''[#count]''' - ограничение количества найденных изображений. По умолчанию установлено для одного изображения - значение '''1''', для всех возможных - значение '''-1'''.  
&lt;br>'''[#deviation]''' - Погрешность оттенка. Пример: есть погрешность 3%. точка имеет цвет 100 120 130, 255*3%=7, соответственно 100+/-7. При этом все цвета в пределах (93 113 123)-(107 127 137) будут считаться совпадением.  
+
<br>'''[#deviation]''' - Погрешность оттенка. Пример: есть погрешность 3%. точка имеет цвет 100 120 130, 255*3%=7, соответственно 100+/-7. При этом все цвета в пределах (93 113 123)-(107 127 137) будут считаться совпадением.  
&lt;br>'''[abs]''' - флаг использования абсолютных координат. Если он указан то поиск происходит относительно левого верхнего угла экрана. Без флага поиск происходит относительно левого верхнего угла рабочего окна(привязанного через ctrl+a либо иным способом).
+
<br>'''[abs]''' - флаг использования абсолютных координат. Если он указан то поиск происходит относительно левого верхнего угла экрана. Без флага поиск происходит относительно левого верхнего угла рабочего окна(привязанного через ctrl+a либо иным способом).
&lt;br>
+
<br>
&lt;br>Если вы ищете на экране текст в виде картинки, и в системе используется сглаживание шрифтов, то могут быть проблемы с нахождением, даже если вы видите, что такой текст на экране есть. Все-равно при включенном сглаживании искомая картинка может незначительно отличаться от того что есть на экране. В этом случае рекомендуется снизить точность поиска либо отключить сглаживание шрифтов на компьютере, где используется findimage.
+
<br>Если вы ищете на экране текст в виде картинки, и в системе используется сглаживание шрифтов, то могут быть проблемы с нахождением, даже если вы видите, что такой текст на экране есть. Все-равно при включенном сглаживании искомая картинка может незначительно отличаться от того что есть на экране. В этом случае рекомендуется снизить точность поиска либо отключить сглаживание шрифтов на компьютере, где используется findimage.
  
'''Коды ошибок FindImage:'''&lt;br>
+
'''Коды ошибок FindImage:'''<br>
''''-1'''' упало при поиске, точная причина не известна.&lt;br>
+
''''-1'''' упало при поиске, точная причина не известна.<br>
''''-2'''' не нашли открывающую скобку после имени функции.&lt;br>
+
''''-2'''' не нашли открывающую скобку после имени функции.<br>
''''-3'''' не найдено пути в скобках.&lt;br>
+
''''-3'''' не найдено пути в скобках.<br>
''''-4''''  ошибка поиска файла.&lt;br>
+
''''-4''''  ошибка поиска файла.<br>
''''-5'''' ошибка обработки искомого изображения.&lt;br>
+
''''-5'''' ошибка обработки искомого изображения.<br>
''''-6'''' ошибка получения изображения с экрана.&lt;br>
+
''''-6'''' ошибка получения изображения с экрана.<br>
 
''''-7'''' нечего искать, искомая картинка пустая.
 
''''-7'''' нечего искать, искомая картинка пустая.
&lt;br>&lt;br>Иногда требуется сделать клик не по самому изображению, а со смещением. Указывать можно как вначале скрипта так и перед функцией Findimage.
+
<br><br>Иногда требуется сделать клик не по самому изображению, а со смещением. Указывать можно как вначале скрипта так и перед функцией Findimage.
 
  set findoffsetx 50    //смещение вправо на 50 пикселей
 
  set findoffsetx 50    //смещение вправо на 50 пикселей
 
  set findoffsety 30    //смещение вниз на 30 пикселей
 
  set findoffsety 30    //смещение вниз на 30 пикселей
Строка 109: Строка 109:
 
  wait 3000                            // ждать 3 секунды
 
  wait 3000                            // ждать 3 секунды
 
  goto metka
 
  goto metka
&lt;br>'''Примеры поиска картинки в перекрытом(не свёрнутом) окне:'''
+
<br>'''Примеры поиска картинки в перекрытом(не свёрнутом) окне:'''
&lt;br>Привязка к окну обязательна. Aero (темы Windows 7) должен быть включен. Если был установлен Астер, то он должен быть отключен, а система перезагружена.
+
<br>Привязка к окну обязательна. Aero (темы Windows 7) должен быть включен. Если был установлен Астер, то он должен быть отключен, а система перезагружена.
&lt;br>Окно может быть перекрыто полностью, частично или вообще не перекрыто. Может находиться за пределами экрана.
+
<br>Окно может быть перекрыто полностью, частично или вообще не перекрыто. Может находиться за пределами экрана.
&lt;br>Иногда требуется указывать родительское окно. В окне пилота есть кнопка 'F', при нажатии открывается окно, в котором отображается что "видит" пилот при поиске (Findcolor, Findimage). Если в окне "чёрный квадрат", значит указано не то окно. В Windows 10 работает не во всех приложениях, может потребоваться установка Aero Glass.
+
<br>Иногда требуется указывать родительское окно. В окне пилота есть кнопка 'F', при нажатии открывается окно, в котором отображается что "видит" пилот при поиске (Findcolor, Findimage). Если в окне "чёрный квадрат", значит указано не то окно. В Windows 10 работает не во всех приложениях, может потребоваться установка Aero Glass.
 
  // Пример 6
 
  // Пример 6
 
  //Чтобы понять как работает поиск можно попробовать на рабочем столе найти значок 'Мой компьютер'.
 
  //Чтобы понять как работает поиск можно попробовать на рабочем столе найти значок 'Мой компьютер'.
Строка 143: Строка 143:
  
 
[[Findcolor]]
 
[[Findcolor]]
&lt;br> [[If]]
+
<br> [[If]]
&lt;br>[[Get color]]
+
<br>[[Get color]]
  
 
== История развития ==
 
== История развития ==
  
 
'''2.20'''
 
'''2.20'''
&lt;br>Добавил команду поиска изображений 'set $a FindImage (StartX StartY EndX EndY (filename) ResultArray [type [accuracy [count]]] [abs])'. Ищет по уникальному для изображения цвету. может ничего не найти, если этот цвет чем-то перекрыт. цвет в левом верхнем углу изображения считается цветом фона, и не анализируется. изображение должно быть 24 бита, bmp. В 'ResultArray' возвращает координаты левого верхнего угла найденых изображений. в строковой переменной возвращает количество найденых изображений, либо процент точности единственного найденного.
+
<br>Добавил команду поиска изображений 'set $a FindImage (StartX StartY EndX EndY (filename) ResultArray [type [accuracy [count]]] [abs])'. Ищет по уникальному для изображения цвету. может ничего не найти, если этот цвет чем-то перекрыт. цвет в левом верхнем углу изображения считается цветом фона, и не анализируется. изображение должно быть 24 бита, bmp. В 'ResultArray' возвращает координаты левого верхнего угла найденых изображений. в строковой переменной возвращает количество найденых изображений, либо процент точности единственного найденного.
&lt;br>type:
+
<br>type:
&lt;br>1 - надежный (default)
+
<br>1 - надежный (default)
&lt;br>2 - быстрый
+
<br>2 - быстрый
&lt;br>accuracy: точность поиска в процентах (default: 80)
+
<br>accuracy: точность поиска в процентах (default: 80)
&lt;br>count: максимальное количество найденых изображений (default: 1, all: -1)
+
<br>count: максимальное количество найденых изображений (default: 1, all: -1)
&lt;br>Коды ошибок:
+
<br>Коды ошибок:
&lt;br>'-1' упало при поиске, точная причина не известна
+
<br>'-1' упало при поиске, точная причина не известна
&lt;br>'-2' не нашли открывающую скобку после имени функции
+
<br>'-2' не нашли открывающую скобку после имени функции
&lt;br>'-3' не найдено пути в скобках
+
<br>'-3' не найдено пути в скобках
&lt;br>'-4' ошибка поиска файла
+
<br>'-4' ошибка поиска файла
&lt;br>'-5' ошибка обработки искомого изображения
+
<br>'-5' ошибка обработки искомого изображения
&lt;br>'-6' ошибка получения изображения с экрана
+
<br>'-6' ошибка получения изображения с экрана
  
 
'''2.21.2'''
 
'''2.21.2'''
&lt;br>Исправил ошибку с определением пути к файлу картинки в 'findimage' после сохранении скрипта через пункт меню 'сохранить как'
+
<br>Исправил ошибку с определением пути к файлу картинки в 'findimage' после сохранении скрипта через пункт меню 'сохранить как'
  
 
'''2.23'''
 
'''2.23'''
&lt;br>Добавил в 'findimage' погрешность оттенка. указывается в %. слегка изменился синтаксис команды:
+
<br>Добавил в 'findimage' погрешность оттенка. указывается в %. слегка изменился синтаксис команды:
 
  'set $a FindImage (StartX StartY EndX EndY (filename) ResultArray [type [accuracy [count [deviation]]]] [abs])'
 
  'set $a FindImage (StartX StartY EndX EndY (filename) ResultArray [type [accuracy [count [deviation]]]] [abs])'
 
Пример: есть погрешность 3%. точка имеет цвет 100 120 130, 255*3%=7, соответственно 100+/-7. При этом все цвета в пределах (93 113 123)-(107 127 137) будут считаться совпадением.
 
Пример: есть погрешность 3%. точка имеет цвет 100 120 130, 255*3%=7, соответственно 100+/-7. При этом все цвета в пределах (93 113 123)-(107 127 137) будут считаться совпадением.
&lt;br>Переделал 'findimage'. повысил стабильность работы. ускорил в ~27 раз при типе поиска 2
+
<br>Переделал 'findimage'. повысил стабильность работы. ускорил в ~27 раз при типе поиска 2
&lt;br>Исправил вычисление точности найденной картинки в команде 'findimage'
+
<br>Исправил вычисление точности найденной картинки в команде 'findimage'
  
 
'''2.27'''
 
'''2.27'''
&lt;br>Научил 'findimage' искать картинки в перекрытых окнах. ищет не на всем экране, а в конкретном указанном окне. хэндл окна указывается в качестве типа поиска
+
<br>Научил 'findimage' искать картинки в перекрытых окнах. ищет не на всем экране, а в конкретном указанном окне. хэндл окна указывается в качестве типа поиска
 
  set #w findwindow (test.bmp)
 
  set #w findwindow (test.bmp)
 
  set $a FindImage ( 0 0 1300 1300 (2.bmp) %a workwindow 70 10 15)
 
  set $a FindImage ( 0 0 1300 1300 (2.bmp) %a workwindow 70 10 15)
Строка 180: Строка 180:
  
 
'''2.27.1'''
 
'''2.27.1'''
&lt;br>Добавил код ошибки -4 с выводом сообщения, что файл не найден в команде 'findimage'.
+
<br>Добавил код ошибки -4 с выводом сообщения, что файл не найден в команде 'findimage'.
&lt;br>Подправил поиск в перекрытых окнах в командах 'findimage', 'findcolor'.
+
<br>Подправил поиск в перекрытых окнах в командах 'findimage', 'findcolor'.
  
 
'''2.31'''
 
'''2.31'''
&lt;br>Научил 'findimage' понимать координаты, указанные элементами массива.
+
<br>Научил 'findimage' понимать координаты, указанные элементами массива.
  
 
'''2.32'''
 
'''2.32'''
&lt;br>Добавил в 'findimage' возврат конечных координат найденной картинки в третьем и четвертом элементе возвращаемого массива.
+
<br>Добавил в 'findimage' возврат конечных координат найденной картинки в третьем и четвертом элементе возвращаемого массива.
  
 
'''2.33'''
 
'''2.33'''
&lt;br>Исправил ошибку в 'findimage', когда выводил имя массива вместо количества найденных.
+
<br>Исправил ошибку в 'findimage', когда выводил имя массива вместо количества найденных.
&lt;br>Переписал команду 'findimage'. Исправил утечки памяти.
+
<br>Переписал команду 'findimage'. Исправил утечки памяти.
  
 
'''2.34'''
 
'''2.34'''
&lt;br>Исправил 'findimage' и 'findcolor'. Возвращали неправильные координаты по Y. Ищет слева снизу - вправо вверх.
+
<br>Исправил 'findimage' и 'findcolor'. Возвращали неправильные координаты по Y. Ищет слева снизу - вправо вверх.
  
 
'''2.35'''
 
'''2.35'''
&lt;br>Перевернул 'findimage'. Теперь снова ищет сверху вниз.
+
<br>Перевернул 'findimage'. Теперь снова ищет сверху вниз.
&lt;br>Исправил в команде 'findimage' выходом за пределы диапазона поиска в сторону уменьшения.
+
<br>Исправил в команде 'findimage' выходом за пределы диапазона поиска в сторону уменьшения.
&lt;br>Добавил в 'findimage' возврат конечных координат найденной картинки в третьем и четвертом элементе возвращаемого массива при типе поиска 2.
+
<br>Добавил в 'findimage' возврат конечных координат найденной картинки в третьем и четвертом элементе возвращаемого массива при типе поиска 2.
&lt;br>Исправил в 'findimage' возврат конечных координат найденной картинки (не возвращало совсем).
+
<br>Исправил в 'findimage' возврат конечных координат найденной картинки (не возвращало совсем).
&lt;br>Исправил 'findimage' и 'findcolor'. Возвращали неправильные координаты.
+
<br>Исправил 'findimage' и 'findcolor'. Возвращали неправильные координаты.
&lt;br>Сделал по-умолчанию второй тип поиска в команде 'findimage'.
+
<br>Сделал по-умолчанию второй тип поиска в команде 'findimage'.
  
 
'''2.36'''
 
'''2.36'''
&lt;br>Добавил переменные смещения кликов мышью и команды 'move', и переменные смещения возвращаемых координат команд 'findimage' и 'findcolor':
+
<br>Добавил переменные смещения кликов мышью и команды 'move', и переменные смещения возвращаемых координат команд 'findimage' и 'findcolor':
 
'clickoffsetx', 'clickoffsety', 'findoffsetx',  'findoffsety'.  
 
'clickoffsetx', 'clickoffsety', 'findoffsetx',  'findoffsety'.  
 
   //размер картинки 9х9
 
   //размер картинки 9х9
Строка 220: Строка 220:
  
 
'''2.39'''
 
'''2.39'''
&lt;br>Исправил ошибку "-4", возникающую, если координата и путь к файлу не разделены пробелом.
+
<br>Исправил ошибку "-4", возникающую, если координата и путь к файлу не разделены пробелом.
  
 
'''2.41'''
 
'''2.41'''
&lt;br>В команду 'findimage' добавил код ошибки '-7' - нечего искать, искомая картинка пустая.
+
<br>В команду 'findimage' добавил код ошибки '-7' - нечего искать, искомая картинка пустая.
 
[[Категория:Поиск изображений]]
 
[[Категория:Поиск изображений]]

Текущая версия на 10:34, 28 августа 2019

Описание

FindImage - оператор поиска сохраненного изображения в области заданной начальными и конечными координатами по оси XY.

Формат картинки должен быть: bmp 24 бита.
Цвет крайнего пикселя в левом верхнем углу изображения считается "цветом фона", и при поиске картинки на экране не учитывается. Например, цвет этого пикселя красный (255). В этом случае все пиксели красного цвета присутствующие на искомой картинке будут считаться фоновыми (прозрачными) и не будут сравниваться с тем, что присутствует на экране. Поэтому, нельзя чтобы в файле-картинке все пиксели были одного цвета. Нужно сделать, чтобы хотя бы один левый верхний пиксель цветом отличался от остальных.

Синтаксис

Привязка к окну: опционально.
Работа со свернутым окном: нет.
Работа с перекрытым окном: Да. Привязка к окну обязательна. Aero (темы Windows) должен быть включен. Если был установлен Астер, то он должен быть отключен, а система перезагружена.

set #a FindImage (#StartX #StartY #EndX #EndY ($filename) %ResultArray [#type [#accuracy [#count [#deviation]]]] [abs])

Где:
<#a> - переменная, в которую записывается результат работы команды findimage:
Если #a = 0, значит поиск был произведён, но картинка не найдена.
Если найдена только 1 картинка, то будет записан процент точности найденного изображения.
Если найдено несколько картинок, то будет записано количество найденных изображений.
Однозначно определить сколько именно картинок было найдено командой FindImage лучше всего по размеру массива %ResultArray с помощью функции Size(%ResultArray).
#a < 0 означает, что FindImage не смог произвести поиск- либо была обнаружена ошибка в написании параметров команды, либо проблемы с самим файлом картинки.
Если #a = -4, значит файл картинки не найден / в неправильном формате / повреждён / все пиксели файла одного цвета. Чаще всего- путь к файлу указан неправильно.
<#StartX #StartY> - координаты левого верхнего угла области поиска.
<#EndX #EndY> - координаты правого нижнего угла области поиска.
<($filename)> - путь к сохранённому изображению (только файл формата bmp). Путь к изображению может быть указан как абсолютный - (C:\programms\pilot\images\), так и относительный - (images\). Указывается в круглых скобках. При использовании пробелов в адресе используйте кавычки либо строковую переменную(например $myPatch), предварительно присвоив ей(переменной) необходимый адрес.
<%ResultArray> - результирующий массив, в который записываются координаты изображения. Координатами изображения считается пиксель левого верхнего угла изображения. Если найдено несколько изображений, то координаты всех найденных изображений. Каждая строка массива хранится данные по отдельному найденному изображению: в первой колонке- координата X, во второй колонке- координата Y.
[#type] - тип поиска. Может принимать значения: 1 (надежный), 2 (быстрый). Настоятельно рекомендуется использовать быстрый способ поиска, кроме случаев с некорректным обнаружением изображения. По умолчанию 2й тип поиска.
[#accuracy] - точность поиска. Указывается в процентах. Используется для отсева изображений не достаточно схожих с оригиналом. По умолчанию значение равно 80%.
[#count] - ограничение количества найденных изображений. По умолчанию установлено для одного изображения - значение 1, для всех возможных - значение -1.
[#deviation] - Погрешность оттенка. Пример: есть погрешность 3%. точка имеет цвет 100 120 130, 255*3%=7, соответственно 100+/-7. При этом все цвета в пределах (93 113 123)-(107 127 137) будут считаться совпадением.
[abs] - флаг использования абсолютных координат. Если он указан то поиск происходит относительно левого верхнего угла экрана. Без флага поиск происходит относительно левого верхнего угла рабочего окна(привязанного через ctrl+a либо иным способом).

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

Коды ошибок FindImage:
'-1' упало при поиске, точная причина не известна.
'-2' не нашли открывающую скобку после имени функции.
'-3' не найдено пути в скобках.
'-4' ошибка поиска файла.
'-5' ошибка обработки искомого изображения.
'-6' ошибка получения изображения с экрана.
'-7' нечего искать, искомая картинка пустая.

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

set findoffsetx 50    //смещение вправо на 50 пикселей
set findoffsety 30    //смещение вниз на 30 пикселей

set findoffsetx -40   //смещение влево на 40 пикселей
set findoffsety -60   //смещение вверх на 60 пикселей

Примеры

// Пример 1
// перед запуском скрипта не забываем привязать скрипт к рабочему окну (Ctrl+A)
set #startX 100
set #startY 120
set #endX 300
set #endY 540
set $path "C:\Program Files\UOPilot\images\"
set %cash[1] картинка
// будем искать картинку из файла C:\Program Files\UOPilot\images\картинка.bmp
set #a findimage (#startX #startY #endX #endY ($path%cash[1].bmp) %crds 2)
if #a > 0
  msg Изображение найдено в координатах X= %crds[1 1] Y= %crds[1 2]. Кликнем на нём...
  left %crds[1 1] %crds[1 2] // кликнули
else
  msg Изображение не найдено
end_if

В результате работы, если в заданной области картинка обнаружена, в массив %crds[1 1] будет записано значение координаты X для первой картинки, а в %crds[2 2] - значение Y для второй картинки.

// Пример 2
//поиск изображений (если будет найдено больше 20 поиск прекратится) с точностью 70% и отклонением в цвете 5%
set #check FindImage (#startX #startY #endX #endY (images\step.bmp) %crds 2 70 20 5)   
// Пример 3
set #b FindImage (10 100 30 150 (d:\myImages\wolf.bmp) %arr 2 80 20 5)
// Пример 4
// будем искать картинку из файла картинка2.bmp, находящуюся в папке пилота
set #a findimage (100 120 1024 700 (\картинка2.bmp) %arr 2 80 -1)  
set #w size (%arr) // получим число найденных картинок
msg Найдено картинок: #w
for #i 1 #w
   set #x %arr [#i 1]
   set #y %arr [#i 2]
   msg картинка в координатах: #x #y
end_for
// Пример 5
// поиск нескольких картинок
// перед запуском скрипта не забываем привязать скрипт к рабочему окну (Ctrl+A)
set #startX 0
set #startY 0
set #endX 1920
set #endY 1080
set $path "C:\Program Files\UOPilot\images\"      // путь к картинкам
set %image [1] картинка1                          // имя изображения
set %image [2] картинка2                          // имя второго изображения
set %image [3] картинка3                          // третьего
set %image [4] карти                              // имена могут быть любыми

set #size size(%image)                            // всего картинок 
hint Всего картинок #size 

:metka
for #i 1 #size 1                     // цикл для поиска картинок
    set #a findimage (#startX #startY #endX #endY ($path%image[#i].bmp) %arr 2)
    if  #a > 0
        move %arr[1 1] %arr[1 2]     // переместить курсор на найденную картинку
        wait 500                     // ждать 0,5 секунды
    end_if
end_for
wait 3000                            // ждать 3 секунды
goto metka


Примеры поиска картинки в перекрытом(не свёрнутом) окне:
Привязка к окну обязательна. Aero (темы Windows 7) должен быть включен. Если был установлен Астер, то он должен быть отключен, а система перезагружена.
Окно может быть перекрыто полностью, частично или вообще не перекрыто. Может находиться за пределами экрана.
Иногда требуется указывать родительское окно. В окне пилота есть кнопка 'F', при нажатии открывается окно, в котором отображается что "видит" пилот при поиске (Findcolor, Findimage). Если в окне "чёрный квадрат", значит указано не то окно. В Windows 10 работает не во всех приложениях, может потребоваться установка Aero Glass.

// Пример 6
//Чтобы понять как работает поиск можно попробовать на рабочем столе найти значок 'Мой компьютер'.
//Делаем картинку значка в формате bmp, называем 'мойкомпьютер' (без кавычек), закидываем на диск 'C:'.
//При этом можно перекрыть значок каким-нибудь окном.

//Не забываем сделать привязку Ctrl + A.
set #a FindImage(0 0 1920 1080 (C:\мойкомпьютер.bmp) %arr workwindow)
if #a > 0
    log Картинка найдена. Наведём на неё курсор.
    move %arr [1 1] %arr [1 2]
    End_script
else
    msg Картинка не найдена.
end_if 
// Пример 7
//Ищем картинку в окне Yandex, при этом не важно какое указано окно через Ctrl + A или сделано рабочим через 'set workwindow'. 
set #handle FindWindow(Yandex)              //поиск окна с именем Yandex
set #a FindImage(0 0 1920 1080 (C:\UOPilot\images\image.bmp) %arr #handle 80 -1 3)     //поиск изображения
hint #a                                     //в правом нижнем углу отображён результат поиска     
if #a > 0
    move %arr [1 1] %arr [1 2] #handle      //навести курсор на первую найденную картинку 
                                            //обратите внимание, что в команде 'move' указан хендл окна
                                            //т. е. курсор будет перемещён как будто привязка сделана к окну Yandex
    End_script
end_if

Смотрите также

Findcolor
If
Get color

История развития

2.20
Добавил команду поиска изображений 'set $a FindImage (StartX StartY EndX EndY (filename) ResultArray [type [accuracy [count]]] [abs])'. Ищет по уникальному для изображения цвету. может ничего не найти, если этот цвет чем-то перекрыт. цвет в левом верхнем углу изображения считается цветом фона, и не анализируется. изображение должно быть 24 бита, bmp. В 'ResultArray' возвращает координаты левого верхнего угла найденых изображений. в строковой переменной возвращает количество найденых изображений, либо процент точности единственного найденного.
type:
1 - надежный (default)
2 - быстрый
accuracy: точность поиска в процентах (default: 80)
count: максимальное количество найденых изображений (default: 1, all: -1)
Коды ошибок:
'-1' упало при поиске, точная причина не известна
'-2' не нашли открывающую скобку после имени функции
'-3' не найдено пути в скобках
'-4' ошибка поиска файла
'-5' ошибка обработки искомого изображения
'-6' ошибка получения изображения с экрана

2.21.2
Исправил ошибку с определением пути к файлу картинки в 'findimage' после сохранении скрипта через пункт меню 'сохранить как'

2.23
Добавил в 'findimage' погрешность оттенка. указывается в %. слегка изменился синтаксис команды:

'set $a FindImage (StartX StartY EndX EndY (filename) ResultArray [type [accuracy [count [deviation]]]] [abs])'

Пример: есть погрешность 3%. точка имеет цвет 100 120 130, 255*3%=7, соответственно 100+/-7. При этом все цвета в пределах (93 113 123)-(107 127 137) будут считаться совпадением.
Переделал 'findimage'. повысил стабильность работы. ускорил в ~27 раз при типе поиска 2
Исправил вычисление точности найденной картинки в команде 'findimage'

2.27
Научил 'findimage' искать картинки в перекрытых окнах. ищет не на всем экране, а в конкретном указанном окне. хэндл окна указывается в качестве типа поиска

set #w findwindow (test.bmp)
set $a FindImage ( 0 0 1300 1300 (2.bmp) %a workwindow 70 10 15)
set $a FindImage ( 0 0 1300 1300 (2.bmp) %a #w 70 10 15)

2.27.1
Добавил код ошибки -4 с выводом сообщения, что файл не найден в команде 'findimage'.
Подправил поиск в перекрытых окнах в командах 'findimage', 'findcolor'.

2.31
Научил 'findimage' понимать координаты, указанные элементами массива.

2.32
Добавил в 'findimage' возврат конечных координат найденной картинки в третьем и четвертом элементе возвращаемого массива.

2.33
Исправил ошибку в 'findimage', когда выводил имя массива вместо количества найденных.
Переписал команду 'findimage'. Исправил утечки памяти.

2.34
Исправил 'findimage' и 'findcolor'. Возвращали неправильные координаты по Y. Ищет слева снизу - вправо вверх.

2.35
Перевернул 'findimage'. Теперь снова ищет сверху вниз.
Исправил в команде 'findimage' выходом за пределы диапазона поиска в сторону уменьшения.
Добавил в 'findimage' возврат конечных координат найденной картинки в третьем и четвертом элементе возвращаемого массива при типе поиска 2.
Исправил в 'findimage' возврат конечных координат найденной картинки (не возвращало совсем).
Исправил 'findimage' и 'findcolor'. Возвращали неправильные координаты.
Сделал по-умолчанию второй тип поиска в команде 'findimage'.

2.36
Добавил переменные смещения кликов мышью и команды 'move', и переменные смещения возвращаемых координат команд 'findimage' и 'findcolor': 'clickoffsetx', 'clickoffsety', 'findoffsetx', 'findoffsety'.

  //размер картинки 9х9
set findoffsetx 5 
set findoffsety 5
set ... findimage
  //вернет координаты не левого верхнего угла а центра картинки
set clickoffsetx 5
set clickoffsety 5
left 0 0
  //кликнет в координаты 5, 5

Добавил кнопочку "F", открывающую тестовую формочку с изображением, найденным Findimage.

2.39
Исправил ошибку "-4", возникающую, если координата и путь к файлу не разделены пробелом.

2.41
В команду 'findimage' добавил код ошибки '-7' - нечего искать, искомая картинка пустая.