|
|
|
Программа Unique Colors Search, подбор уникальных цветов для быстрого поиска мобов/объектов |
|
|
Anwalt |
4.11.2012, 23:51
|
Novice
Сообщений: 53
Регистрация: 2.8.2012 Группа: Пользователи Наличность: 0
Пользователь №: 15.161
Возраст: 31
|
Программка мучает меня уже 2 день, ни как не могу найти подходящий цвет, который бы работал в УО, наверное что то делаю не так, но в инструкции обратил внимание на "проверить изображения скринов - может где-то случайно попался кусочек вашего объекта и из-за этого многие цвета объекта были отброшены в процессе анализа." Я делал вырезки обьектов, захватывая кусочки фона (как было показанно на скринах). Но по логике получается, что в левом окне обьект + кусочки фона. В правом окошке вырезки. Может ли это помешать точности определения цвета? У меня такая проблема, цвет определен с 100 % точностью судя по описанию Freq, но в пилоте все выглядет не так как задуманно, клиент кликает везде, прокручивает скрипт несколько раз в холостую, иногда находит, иногда тыкает в другую сторону... Поправьте что не правельно... В самом пилоте также пробывал определять цвет, но это ни чего не изменило вот мой скрипт Код // привязка к окну Стрл+А
set $a 0 while $a < 1 set $a findcolor (173, 16 1309, 673 1 1 12302263 %arr 2) // радиус поиска задаю нажав в левой верхней части Стрл+А и в нижней правой end_while left %arr [1 1], %arr [1 2] wait 3s
За программку спасибо и респект, впечатлила (IMG: style_emoticons/default/rolleyes.gif) , разобраться только надо (IMG: style_emoticons/default/dry.gif)
|
|
|
|
Anwalt |
5.11.2012, 6:03
|
Novice
Сообщений: 53
Регистрация: 2.8.2012 Группа: Пользователи Наличность: 0
Пользователь №: 15.161
Возраст: 31
|
Цитата(Zeleax @ 4.11.2012, 22:10) Вы бы дали ссылку на архив всех картинок объекта и скринов без объекта, чтоб проще было разобраться в чём проблема. Может вы только 1 изображение объекта анализируете? (тогда вероятность всегда равна 100%, что неверно). Так их нужно штук 6-10 или больше.
Попробывал сделать все заново, тщательно убирая лишнии детали обьекта с фона, выдало 55,6 %. Применил кодировку цвета в пилоте. Результат» 5 % в нужное место, 60 % в холостую прогон в пилоте, остальные по каким либо не запланированым местам... Что то делаю не правильно, все прикрепил, можно посмотреть http://www.fayloobmennik.net/2331311пароль 1111 прошу прощения, не умею сылки прятать
|
|
|
|
Zeleax |
5.11.2012, 8:35
|
ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010 Группа: Пользователи Наличность: 0 Из: Киев
Пользователь №: 13.093
|
Скачал, посмотрел. В принципе, почти всё правильно. Но есть некоторые нюансы: - точно ли скрины делались _сразу_ в формате png? - размер олова на скринах слишком отличается. Например, 1 и 4 скрины отличаются от остальных в несколько раз. Что-то здесь не так. - при вырезке объекта не нужно захватывать лишний фон вокруг него специально. Я просто показывал, что это делать можно, но не нужно к этому стремиться ) Попробуйте эти два цвета для поиска: 3156263 или 6578015(нашел их по поиску Best combination, а потом выбирал разные картинки олова и даблкликал на предложенном в окне отчета цвете). Обычно нужно прокликать несколько верхних цветов при выбранных картинках искомого объекта, чтоб удостовериться, что они там есть (эти точки будут мигать на картинке). Алгоритм в программе нужно еще допиливать, чтоб не предлагал лишнего. Получаемых точек действительно довольно много, поэтому нужно для них искать "центр тяжести", чтоб не кликать по каждой. Когда-то писал скрипт для похожей цели, но он ищет не центр тяжести, а крайнюю точку группы, и возможно нужно увеличить квадрат радиуса захвата, чтоб олово целиком влезло в указанный размер (радиус захвата). Нужно доработать. Скрипт поиска групп точек (находит крайнюю точку)
Код set linedelay 1 // убираем задержку между строк set $a findcolor (173, 16 1309, 673 1 1 (3156263) %arr 2) // ищем нужные цвета set #sz size( %arr ) if #sz = 0 // цвет не найден goto not_found end_if
// !!! в массиве %arr уже должен быть результат поиска команды findcolor !!! set timer set #r2 800 // квадрат радиуса захвата set #last_group 0 for #i 1 #sz if %arr[#i 3] = "" set #last_group #last_group + 1 set %arr[#i 3] #last_group set %rez[#last_group 1] %arr[#i 1] set %rez[#last_group 2] %arr[#i 2] end_if set #m #i + 1 set #last_i #i for #j #m #sz if %arr[#j 3] = "" set #r (%arr[#i 1] - %arr[#j 1]) * (%arr[#i 1] - %arr[#j 1]) + (%arr[#i 2] - %arr[#j 2]) * (%arr[#i 2] - %arr[#j 2]) if #r <= #r2 set %arr[#j 3] #last_group set #p #j - 1 if #p = #last_i set #last_i #j end_if end_if end_if end_for // j set #i #last_i end_for // i msg Обнаружено #last_group групп состоящих из #sz точек. Потрачено времени - timer мс. //save_array %arr d:\Install\UOPilot\arr2.txt for #i 1 #last_group msg %rez[#i 1], %rez[#i 2] end_for :not_found
// другие команды... end_script Сообщение отредактировал Zeleax - 5.11.2012, 9:06
--------------------
|
|
|
|
Anwalt |
5.11.2012, 14:43
|
Novice
Сообщений: 53
Регистрация: 2.8.2012 Группа: Пользователи Наличность: 0
Пользователь №: 15.161
Возраст: 31
|
- да, скрины были сделаны сразу в npg формате, программой ScreenShot. - обьект 4, 1 не измененного размера, остальные я увеличивал, эксперементировал, мне казалось что они маленькие. Хотя до этого делал все одинаковые. - понял, буду стараться как можно меньше захватывать лишнего (IMG: style_emoticons/default/smile.gif) цвета потэстил второй подходит больше, но проблемку не решил, без контроля оставлять опасно)) я тут что подумал, а не лучше ли в моем случае пользоваться findimage? И на сколько тщятельно нужно вырезать обьект? Можно ли воспользоваться функцией Find image в UCS? Благадарствую за скрипт, буду разбераться, для меня он еще сложноватый, не все команды известны, что бы проследить логику, пилот просто прогоняет его меньше чем за секунду и останавливает скрипт, больше в принципе ни чего не происходит, квадрат поиска увеличил, сижу размышляю куда вставить лефт и под какие координаты, хочется дать независимость персу для ремесла (IMG: style_emoticons/default/biggrin.gif)
|
|
|
|
artem04321 |
8.2.2013, 11:06
|
Neophyte
Сообщений: 33
Регистрация: 4.1.2013 Группа: Пользователи Наличность: 0
Пользователь №: 15.627
Возраст: 18
|
Цитата(veiron @ 8.2.2013, 11:12) В игре есть мобы, которые вроде и стоят на месте, но постоянно ворочаются влево вправо, попробовал их отлавливать Фимеджем, не получается из за того что он ворочается и картинка все время разная, Фколор то же самое, как их можно отлавливать пилотом . Сами мобы стоят на одном месте, но из за того что перс ходит по полю, координаты постоянно меняются.
а картинки выложить...
|
|
|
|
veiron |
8.2.2013, 14:06
|
Master
Сообщений: 1.264
Регистрация: 22.5.2012 Группа: Пользователи Наличность: 1 Из: Белоруссии
Пользователь №: 14.972
|
Цитата(-AL- @ 8.2.2013, 14:58) попробуй точность картинки поставить = 30%, вариацию цвета = 6...12 , больше 12 уже осторожно
Попробую. 50% я пробовал, и 5 вариацию цвета делал, Фимедж пытается найти,раз 50 - 60 цикл прогонит 1 раз может найти, а может и не найти, нет постоянного нахождения. Цитата(zavas @ 8.2.2013, 15:02) А можно скрин поля с картинкой и персом
(IMG: http://s54.radikal.ru/i145/1302/eb/4ea5e71d1478.gif)
|
|
|
|
veiron |
8.2.2013, 21:01
|
Master
Сообщений: 1.264
Регистрация: 22.5.2012 Группа: Пользователи Наличность: 1 Из: Белоруссии
Пользователь №: 14.972
|
Цитата(Zeleax @ 8.2.2013, 21:17) Можете- выложите сюда подготовленные скрины в архиве в разных папках (искомые объекты, "фон") - чтоб было видно где что анализируется
Вот скрины которые анализировал. В игре нашел неподвижную точку. мобы постоянно стоят на одном месте. от этой точки путем смещения смотрел есть моб или нет. И что получилось, точку нахожу,смотрю моб ЕСТЬ, нажимаю в этих координатах лефт, он почему то не всегда срабатывает, и перс просто стоит на месте. или если лефт сработал, и перс туда пошел, то пилот может отправить его еще куда нибуд, ведь цикл продолжается, хотя не пойму почему так, ведь есть неподвижная точка А от нее на постоянном расстоянии находится неподвижная точка В, тогда почему пилот отправляет перса не туда понять не могу.
|
|
|
|
|
|
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0
|
|