Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: Владимир Миньков on July 08, 2015, 07:16:46 PM

Title: Проблема с поиском картинки.
Post by: Владимир Миньков on July 08, 2015, 07:16:46 PM
Всем привет.
При поиске картинки у меня постоянно выдаёт ошибку.
Ошибка при интерпретации строки IF_PICTURE_IN (422,341, $_xmax,$_ymax, "arena.bmp", -1, 100)
Прервать выполнения сценария?
Картинку я переделал из png в bmp.
Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN (422,341, $_xmax,$_ymax, "arena.bmp", -1, 100)
   LCLICK($_return1, $_return2)
   WAIT(2)
END_IF

halt
Title: Re: Проблема с поиском картинки.
Post by: Oraven on July 08, 2015, 09:23:03 PM
Переделал каким образом? Просто в место png написал bmp? У меня просто других вариантов нет, скрипт написан правильно, но явно что то не так с файлом.
Title: Re: Проблема с поиском картинки.
Post by: Владимир Миньков on July 08, 2015, 09:39:52 PM
Да, просто переименов файл. Был png, а стал bmp
Title: Re: Проблема с поиском картинки.
Post by: Владимир Миньков on July 08, 2015, 10:22:03 PM
Конвертировал png в bmp уже через сайт, ошибка исчезла, но ничего не происходит (он не кликает на картинку)
Просто ничего не происходит
Title: Re: Проблема с поиском картинки.
Post by: Oraven on July 09, 2015, 07:56:09 AM
Я не понимаю ты что школу прогуливал? Почему ты в один угол пишешь X в другой Y?
IF_PICTURE_IN (100,100, 200,200, "arena.bmp", -1, 100)
У прямоугольной области 4 числа координат, первые две это верхний левый угол X Y, вторые две это нижний правый угол X2 Y2.

$_xmax,$_ymax - это системные переменные, через них кликер выводит размер твоего экрана.
Изначально там стоят такие настройки 0,0,$_xmax,$_ymax это означает что поиск будет на всем экране, каким бы он ни был.

На счет картинки:
Нажимаешь PrintScreen открываешь редактор, хотя бы стандартный Paint, вставляешь снимок Ctrl+V и вырезаешь маленький фрагментик. Сохраняешь в BMP 24Bit.
И еще учти что клик приходится на верхний левый угол этого фрагментика.
Можно задать смещение чтоб кликнул в нужное место.
Code: (clickermann) [Select]
LCLICK($_return1+10, $_return2+5) // чуть правее и ниже


Title: Re: Проблема с поиском картинки.
Post by: Владимир Миньков on July 09, 2015, 10:46:47 AM
Опять ошибка....
Title: Re: Проблема с поиском картинки.
Post by: Oraven on July 09, 2015, 01:26:32 PM
При загрузке или сохранении скрипта папка, в которой находится скрипт, становится корнем. В ней кликер ищет все приложенные файлы. В редакторе показывается текущий путь до рабочей папки. Если же скрипт не сохранен то корнем считается папка кликера. Тебе нужно создать папку проекта, в нее поместить скрип и картинки, и уже от туда загружать.

Как дети малые....
Title: Re: Проблема с поиском картинки.
Post by: Владимир Миньков on July 09, 2015, 01:55:24 PM
Я так и сделал. Но он говорит что одного файла не достаёт.
Title: Re: Проблема с поиском картинки.
Post by: Oraven on July 09, 2015, 02:00:31 PM
Ах вот оно что, ты указал 4 числа а $_xmax,$_ymax не стер! И кликер вообще не въезжает что ты ему там вводишь

Вот что тебе нужно
Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN (399,315, 485,345, "arena.bmp", -1, 100)
   LCLICK($_return1, $_return2)
   WAIT(2)
END_IF

halt
Title: Re: Проблема с поиском картинки.
Post by: Владимир Миньков on July 09, 2015, 04:05:33 PM
Может быть я неправильно указываю координаты???
Опять же ничего не происходит после включения скрипта. Он запускается и моментально останавливается.
Title: Re: Проблема с поиском картинки.
Post by: Oraven on July 09, 2015, 05:06:16 PM
Ну вот теперь все правильно. А ничего не находит потому что пикселы в твоем фрагменте не сходятся с теми что на экране. Графика иногда имеет свойство меняться.

В этом случаи применяется цветокоррекция с процентом совпадения
Вот таким скриптом получаем скорректированный снимок
Code: (clickermann) [Select]
// Получение скриншота с цветокоррекцией (фильтр 6)
// Скриншот появится в папке screens папки скрипта или в папке кликера
GETSCREEN
COLORMODE(6)
SCREENSHOT
HALT
Из этого скриншота вырезаем фрагмент для поиска.

И в скрипте также применяем цветокоррекцию снимка и понижаем процент совпадения, в данном случаи до 70%
Code: (clickermann) [Select]
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (399,315, 485,345, "arena.bmp", -1, 70)
   LCLICK($_return1, $_return2)
   WAIT(2)
END_IF

halt
Title: Re: Проблема с поиском картинки.
Post by: Владимир Миньков on July 09, 2015, 05:51:06 PM
Спасибо вам огромное! Наконец он работает!
Вот только тыкает рядом, но нужно это уже вручную настраивать
Чуток изменил код и он начал идеально распознавать картинку
Code: (clickermann) [Select]
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,0,$_xmax,$_ymax, "arena.bmp", -1, 100)
   LCLICK($_return1, $_return2)
   WAIT(2)
END_IF
 
halt
Title: Re: Проблема с поиском картинки.
Post by: Oraven on July 09, 2015, 07:15:57 PM
Вот только тыкает рядом, но нужно это уже вручную настраивать
Можно задать смещение чтоб кликнул в нужное место.
Code: (clickermann) [Select]
LCLICK($_return1+10, $_return2+5) // чуть правее и ниже
Title: Re: Проблема с поиском картинки.
Post by: Владимир Миньков on July 09, 2015, 07:24:27 PM
Про это я знаю. Кликер же будет дольше искать по всему экрану картинку нежеле по выбранному месту?
Title: Re: Проблема с поиском картинки.
Post by: Oraven on July 10, 2015, 06:39:55 AM
Конечно нужно указывать место предполагаемого появления, и размер картинки урезай до предела. По высоте сделай 2-3 пиксела и он найдет её почти мгновенно.