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

0 Members and 4 Guests are viewing this topic.

villacula

  • Зашел в гости
  • *
  • Posts: 10
    • View Profile
Поиск картинки.
« on: April 30, 2017, 08:29:53 PM »
Здравствуйте, мне нужен спкрипт.

Что должно выполняться:

  1. Поиск картинки: 1.bmp (4.2Кб 32х32) если картинка находится, то нажимается левая кнопка мыши и мы переходим на другой сайт. В этом сайте мы должны нажать на определенный текст и вернуться обратно в первую вкладку (google chrome)
 
  2. Если первая картинка не нашлась, то ищется другая картинка 2.bmp (4.2Кб 32х32), далее как в первом пункте
 
  3. Если программа выполнит все эти действия, то она не должна прекратить работу, она должна дожидаться появление картинки.

Помогите пожалуйста, я вообще не разбираюсь в программах,скриптах. Буду очень благодарна вам.  ::)

villacula

  • Зашел в гости
  • *
  • Posts: 10
    • View Profile
Re: Поиск картинки.
« Reply #1 on: April 30, 2017, 10:32:01 PM »
НУ или помогите разобраться самому...
мне нужна информация конкретная

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Поиск картинки.
« Reply #2 on: April 30, 2017, 10:35:56 PM »
открываем справку, язык сценариев, анализ экрана. ищем IF_PICTURE_IN и читаем.
[spoiler]IF_PICTURE_IN

Синтаксис

IF_PICTURE_IN (x, y, x2, y2, "file", [bgcolor], [currency]) - производит поиск изображения в прямоугольной области буфера анализа


Параметры
x, y - числовые координаты левого верхнего угла области поиска
x2, y2 - числовые координаты правого нижнего угла области поиска
file - bmp файл, поиск которого будет осуществляться
bgcolor - необязательный параметр; игнорируемый цвет фона входного изображения
currency - необязательный параметр; точность поиска в процентах (1..99)



Возвращаемые параметры
$_return1 - x координата найденного изображения
$_return2 - y координата -//-



Пример
getscreen

IF_PICTURE_IN (10,20, 300, 300, "somefile.bmp")
 move($_return1, $_return2) // либо твои действия, клики и т.п.
END_IF


Примечания
Работает аналогично IF_PIXEL_IN
Как только первый попавшийся участок будет найден, инструкция вернет его координаты в переменные $_return1, $_return2 (координаты верхнего левого угла) и прекратит анализ
Для того что бы участок признался подходящим, необходимо 100% соответствие пикселей bmp-файла и текущего снимка экрана. Или же можно задать цвет фона изображения, который не будет учитываться при поиске на экране. Если цвет фона не задан, изображение ищется с учетом всех пикселей
Так же можно задать не 100% совпадение. Для этого укажите в параметре currency необходимую точность. Этот параметр определяет на какое от общего числа количество несовпавших пикселей программа "закроет глаза". Однако имейте ввиду, что чем ниже значение точности, тем дольше идет поиск
Если параметр currency не задан, по умолчанию он равен 100. Если параметр bgcolor не задан, по умолчанию он равен -1. Если есть необходимость задать точность, не задавая фон, сделайте bgcolor равным -1
Входные файлы для анализа должны находиться в директории проекта, быть формта BMP и иметь стандартную разрядность 24 бита. В случае использования цветокоррекции, входной файл должен быть уже откорректирован. Чтобы добиться этого результата, выполните код ниже (подставив нужный код для colormode), затем вырежьте нужный участок картинки в каком-нибудь редакторе. Скриншот должен быть в BMP

getscreen
colormode(КОД_РЕЖИМА)
screenshot

[/spoiler]

далее, если "2. Если первая картинка не нашлась, то ищется другая картинка 2.bmp"
нужно добавить действие, которое выполнится если картинка не найдена
Code: (clickermann) [Select]
getscreen

IF_PICTURE_IN (10,20, 300, 300, "1.bmp")
   // твои действия, клики и т.п. если картинка 1.bmp есть
else   
   IF_PICTURE_IN (10,20, 300, 300, "2.bmp")// твои действия, клики и т.п. если картинки 1.bmp нет
      // твои действия, клики и т.п. если картинка 2.bmp есть
   END_IF
END_IF

по поводу "В этом сайте мы должны нажать на определенный текст".
жмем ctrl+f, вводим искомый текст, жмем по найденному. в помощь "Процедуры и функции работы с клавиатурой" и поиск по цвету пикселя IF_PIXEL_IN, ищем в справке.



villacula

  • Зашел в гости
  • *
  • Posts: 10
    • View Profile
Re: Поиск картинки.
« Reply #3 on: April 30, 2017, 11:54:11 PM »

у меня не получается ничего=((

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Поиск картинки.
« Reply #4 on: May 01, 2017, 12:45:12 AM »








villacula

  • Зашел в гости
  • *
  • Posts: 10
    • View Profile
Re: Поиск картинки.
« Reply #5 on: May 01, 2017, 12:54:17 AM »
Ты чудо! Спасибо.
буду пробовать...

villacula

  • Зашел в гости
  • *
  • Posts: 10
    • View Profile
Re: Поиск картинки.
« Reply #6 on: May 01, 2017, 01:05:44 AM »
открываем справку, язык сценариев, анализ экрана. ищем IF_PICTURE_IN и читаем.
[spoiler]IF_PICTURE_IN

Синтаксис

IF_PICTURE_IN (x, y, x2, y2, "file", [bgcolor], [currency]) - производит поиск изображения в прямоугольной области буфера анализа


Параметры
x, y - числовые координаты левого верхнего угла области поиска
x2, y2 - числовые координаты правого нижнего угла области поиска
file - bmp файл, поиск которого будет осуществляться
bgcolor - необязательный параметр; игнорируемый цвет фона входного изображения
currency - необязательный параметр; точность поиска в процентах (1..99)



Возвращаемые параметры
$_return1 - x координата найденного изображения
$_return2 - y координата -//-



Пример
getscreen

IF_PICTURE_IN (10,20, 300, 300, "somefile.bmp")
 move($_return1, $_return2) // либо твои действия, клики и т.п.
END_IF


Примечания
Работает аналогично IF_PIXEL_IN
Как только первый попавшийся участок будет найден, инструкция вернет его координаты в переменные $_return1, $_return2 (координаты верхнего левого угла) и прекратит анализ
Для того что бы участок признался подходящим, необходимо 100% соответствие пикселей bmp-файла и текущего снимка экрана. Или же можно задать цвет фона изображения, который не будет учитываться при поиске на экране. Если цвет фона не задан, изображение ищется с учетом всех пикселей
Так же можно задать не 100% совпадение. Для этого укажите в параметре currency необходимую точность. Этот параметр определяет на какое от общего числа количество несовпавших пикселей программа "закроет глаза". Однако имейте ввиду, что чем ниже значение точности, тем дольше идет поиск
Если параметр currency не задан, по умолчанию он равен 100. Если параметр bgcolor не задан, по умолчанию он равен -1. Если есть необходимость задать точность, не задавая фон, сделайте bgcolor равным -1
Входные файлы для анализа должны находиться в директории проекта, быть формта BMP и иметь стандартную разрядность 24 бита. В случае использования цветокоррекции, входной файл должен быть уже откорректирован. Чтобы добиться этого результата, выполните код ниже (подставив нужный код для colormode), затем вырежьте нужный участок картинки в каком-нибудь редакторе. Скриншот должен быть в BMP

getscreen
colormode(КОД_РЕЖИМА)
screenshot

[/spoiler]

далее, если "2. Если первая картинка не нашлась, то ищется другая картинка 2.bmp"
нужно добавить действие, которое выполнится если картинка не найдена
Code: (clickermann) [Select]
getscreen

IF_PICTURE_IN (10,20, 300, 300, "1.bmp")
   // твои действия, клики и т.п. если картинка 1.bmp есть
else   
   IF_PICTURE_IN (10,20, 300, 300, "2.bmp")// твои действия, клики и т.п. если картинки 1.bmp нет
      // твои действия, клики и т.п. если картинка 2.bmp есть
   END_IF
END_IF

по поводу "В этом сайте мы должны нажать на определенный текст".
жмем ctrl+f, вводим искомый текст, жмем по найденному. в помощь "Процедуры и функции работы с клавиатурой" и поиск по цвету пикселя IF_PIXEL_IN, ищем в справке.


Я не совсем понимаю
IF_PICTURE_IN (x, y, x2, y2, "file", [bgcolor], [currency]) - производит поиск изображения в прямоугольной области буфера анализа

А в каком участке поиск проходит? Я могу как то задать эту область?
Когда я ввела этот код,то у меня ничего не просхидит. ЧТо делать дальше?


я ввожу
Code: (clickermann) [Select]
getscreen

IF_PICTURE_IN (10,20, 300, 300, "1.bmp")
   // твои действия, клики и т.п. если картинка 1.bmp есть
   LCLICK($_return1+2, $_return2+2)
   
else
   IF_PICTURE_IN (10,20, 300, 300, "2.bmp")// твои действия, клики и т.п. если картинки 1.bmp нет
      // твои действия, клики и т.п. если картинка 2.bmp есть
      LCLICK($_return1+2, $_return2+2)
   END_IF
END_IF

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Поиск картинки.
« Reply #7 on: May 01, 2017, 02:09:18 AM »
Я не совсем понимаю
IF_PICTURE_IN (x, y, x2, y2, "file", [bgcolor], [currency]) - производит поиск изображения в прямоугольной области буфера анализа

А в каком участке поиск проходит? Я могу как то задать эту область?
Когда я ввела этот код,то у меня ничего не просхидит. ЧТо делать дальше?

ответ:

x, y - числовые координаты левого верхнего угла области поиска
x2, y2 - числовые координаты правого нижнего угла области поиска



Когда я ввела этот код,то у меня ничего не просхидит. ЧТо делать дальше?

да, нужно выставить свою область поиска (ускорит процесс поиска), либо выставить ее на весь экран 0,0, $_xmax,$_ymax . желательно выставить задержки WAIT(delay) или WAITMS(delay) после выполнения если этот код должен выполнятся по кругу. либо halt (стоп) если он должен выполниться один раз.

пример поиска картинки есть в папке с кликерманом \projects\if_picture_in

Code: (clickermann) [Select]
getscreen

IF_PICTURE_IN (0,0, $_xmax,$_ymax, "shit.bmp", 2366701) //производит поиск рисунка какашки на главном окне кликера. заготовка shit.bmp с игнорируемым цветом 2366701 находится в папке со скриптом
  print("shit.bmp found at X=", $_return1, ", Y=", $_return2)
  move($_return1+8, $_return2+8)
else
  print("shit.bmp not found") 
END_IF


halt

если картинка на экране хоть немного не совпадает с образцом-заготовкой, то требуется выставить процент совпадения, параметр [currency]. несовпадения появляются при сглаживании картинки на экране.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Поиск картинки.
« Reply #8 on: May 01, 2017, 08:23:29 AM »
Code: (clickermann) [Select]
SUB(pr1) // подпрограмма
   // ищем текст на странице
   KEYDOWN (#CTRL) // Ctrl+F
   WAITMS (60)
   KEYDOWN (#F)
   WAITMS (60)
   KEYUP (#F)
   KEYUP (#CTRL)
   WAITMS(50)
   KEYPRESS(#DELETE) // удаляем предыдущий поиск
   WAITMS(50)
   
   KEYSTRING("текст для поиска") // Вводим текст для поиска
   WAITMS(500)
   
   GETSCREEN
   IF_PIXEL_IN(0,0, $_xmax,$_ymax, 2350115) // нужно указать цвет выделения в браузере !!!
      LCLICK($_return1+2, $_return2+2) // кликаем по найденному
      WAITMS(500)
   END_IF
   
   KEYDOWN (#CTRL) // возвращаемся на первую вкладку
   WAITMS (50)
   KEYPRESS(#1)
   KEYUP (#CTRL)
   WAITMS(500)
END_SUB

GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "1.bmp", -1, 100)
   LCLICK($_return1, $_return2) // кликаем по найденной картинке
   WAIT(1) // необходимая задержка
   pr1() // переход в подпрограмму
ELSE
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "2.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAIT(1)
      pr1()
   ELSE
      WAITMS(100) // задержка если ничего не найдено
   END_IF
END_IF

villacula

  • Зашел в гости
  • *
  • Posts: 10
    • View Profile
Re: Поиск картинки.
« Reply #9 on: May 01, 2017, 04:46:48 PM »
ВООТ, вот за это спасибо.
Попробую соединить всё что вы мне сказали

villacula

  • Зашел в гости
  • *
  • Posts: 10
    • View Profile
Re: Поиск картинки.
« Reply #10 on: May 01, 2017, 04:56:43 PM »
Code: (clickermann) [Select]
SUB(pr1) // подпрограмма
   // ищем текст на странице
   KEYDOWN (#CTRL) // Ctrl+F
   WAITMS (60)
   KEYDOWN (#F)
   WAITMS (60)
   KEYUP (#F)
   KEYUP (#CTRL)
   WAITMS(50)
   KEYPRESS(#DELETE) // удаляем предыдущий поиск
   WAITMS(50)
   
   KEYSTRING("текст для поиска") // Вводим текст для поиска
   WAITMS(500)
   
   GETSCREEN
   IF_PIXEL_IN(0,0, $_xmax,$_ymax, 2350115) // нужно указать цвет выделения в браузере !!!
      LCLICK($_return1+2, $_return2+2) // кликаем по найденному
      WAITMS(500)
   END_IF
   
   KEYDOWN (#CTRL) // возвращаемся на первую вкладку
   WAITMS (50)
   KEYPRESS(#1)
   KEYUP (#CTRL)
   WAITMS(500)
END_SUB

GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "1.bmp", -1, 100)
   LCLICK($_return1, $_return2) // кликаем по найденной картинке
   WAIT(1) // необходимая задержка
   pr1() // переход в подпрограмму
ELSE
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "2.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAIT(1)
      pr1()
   ELSE
      WAITMS(100) // задержка если ничего не найдено
   END_IF
END_IF


я тут посмотрела и нашла вот это.
Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "1.bmp")
   print("Найден в координатах X=", $_return1, ", Y=", $_return2)
   MOVE($_return1, $_return2)
Else
   HINTPOPUP("Не найдено")
END_IF
HALT
Как только запускаю, картинка не находится=( я не понимаю в чем дело. Картинку я взяла с исходного кода сайта, перевела ее в бмп формат. вставила в папку 2 картинки, что не так я сделала?[/code]
« Last Edit: May 01, 2017, 05:01:05 PM by villacula »

villacula

  • Зашел в гости
  • *
  • Posts: 10
    • View Profile
Re: Поиск картинки.
« Reply #11 on: May 01, 2017, 05:15:35 PM »
Code: (clickermann) [Select]
SUB(pr1) // подпрограмма
   // ищем текст на странице
   KEYDOWN (#CTRL) // Ctrl+F
   WAITMS (60)
   KEYDOWN (#F)
   WAITMS (60)
   KEYUP (#F)
   KEYUP (#CTRL)
   WAITMS(50)
   KEYPRESS(#DELETE) // удаляем предыдущий поиск
   WAITMS(50)
   
   KEYSTRING("текст для поиска") // Вводим текст для поиска
   WAITMS(500)
   
   GETSCREEN
   IF_PIXEL_IN(0,0, $_xmax,$_ymax, 2350115) // нужно указать цвет выделения в браузере !!!
      LCLICK($_return1+2, $_return2+2) // кликаем по найденному
      WAITMS(500)
   END_IF
   
   KEYDOWN (#CTRL) // возвращаемся на первую вкладку
   WAITMS (50)
   KEYPRESS(#1)
   KEYUP (#CTRL)
   WAITMS(500)
END_SUB

GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "1.bmp", -1, 100)
   LCLICK($_return1, $_return2) // кликаем по найденной картинке
   WAIT(1) // необходимая задержка
   pr1() // переход в подпрограмму
ELSE
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "2.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAIT(1)
      pr1()
   ELSE
      WAITMS(100) // задержка если ничего не найдено
   END_IF
END_IF
Да и этот скрипт ничего не находит и ничего не делает. Не ctrl+f не нажимает, не вводит ничего...в чем проблема?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Поиск картинки.
« Reply #12 on: May 01, 2017, 05:16:12 PM »
Как сделать скриншот:
Нажимаешь PrintScreen
Открываешь Paint и вставляешь скрин туда Ctrl+V
Вырезаешь что нужно. Картинка должна быть маленькой не более 50x50
Сохраняешь в BMP 24bit в папку со скриптом.

villacula

  • Зашел в гости
  • *
  • Posts: 10
    • View Profile
Re: Поиск картинки.
« Reply #13 on: May 01, 2017, 05:19:12 PM »
Так, зачем мне скриншот? если я картинку саму из исходного кода сайта взяла? у меня не один скрипт не завелся=(( не  ошибок, ничего. Не могу оттолкнуться

villacula

  • Зашел в гости
  • *
  • Posts: 10
    • View Profile
Re: Поиск картинки.
« Reply #14 on: May 01, 2017, 05:34:38 PM »
Как сделать скриншот:
Нажимаешь PrintScreen
Открываешь Paint и вставляешь скрин туда Ctrl+V
Вырезаешь что нужно. Картинка должна быть маленькой не более 50x50
Сохраняешь в BMP 24bit в папку со скриптом.
Сделала скрин, картинка 24х32, сохранила в бмп в папку со скриптом. И опять ничего...Что мне дальше сделать надо?