UoKit.com Форумы > Кликер > UO Pilot > Плагины и доп. ПО
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
Zeleax
Программа Unique Colors Search

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

По найденным цветам можно быстро искать этот предмет на экране (обычно используется для поиска мобов при создании ботов для онлайн-игр).
В UOPilot для поиска цвета используется функция findcolor

Скачать можно здесь в разделе Downloads
https://sites.google.com/site/leaxplace/
Или с iFolder
Или прям отсюда





Как ни странно идея данной программы возникла по совершенно пустячному (и очень важному!) поводу: захотелось сделать бота для одной из онлайн игр.

Мысль вроде бы разумная - раз есть компьютер и он потр<вырезано анти-матом>ет электроэнергию, так пусть хоть отрабатывает часть своего хлеба сам, нечего меня ещё нагружать сбором всяких ресурсов, убийством мобов и т.д.! =))

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

Одно из её полезных умений - поиск на экране пикселей заданного цвета. Эта функция как раз и используется при поиске объектов, на которых нужно кликнуть, чтоб что-нибудь с ними сделать (или просто проанализировать какую-то информацию на экране). И все было бы хорошо, но вот не попадались мне однотонно фиолетовые ёжики и однотонно зеленые яблоки. Ёжики были с разноцветными иголками и крутились всеми боками, яблоки тоже были с кучей оттенков и лежали в разноцветно-зеленом лесу на разноцветно-зеленой травке. Попробуй тут найди нужный тебе цвет, по которому можно обнаружить именно яблоко и не перепутать его с филейкой крокодила! =))

Программа Unique Colors Search именно это и умеет делать. Она находит те уникальные цвета объекта, по которым можно обнаружить только яблоко, а не листик, травинку или кузнечика.

При практическом использовании очень важно сохранять копии экрана в графические файлы без потери качества. Например, для этого подходят файлы в форматах PNG или BMP.

Принцип пользования простой: нажимая на кнопки над левым списком добавляете/удаляете картинки с яблоками. Файлы и папки также можно добавлять путем перетаскивания из окна Проводника Windows. Нажимая кнопки над правым списком добавляете/удаляете картинки леса без яблок, которые предварительно вырезаны (т.е. картинки фона). Я, например, просто грубо обвожу яблоки по контуру захватывая немного лишнего фона и все внутри заливаю белым цветом. В практике намного лучше ситуация, когда в изображениях объекта будут лишние пиксели фона, чем если в картинки фона попадут части объекта! Вывод: выделяйте объекты по контуру "с запасом наружу".
Потом нажимаем кнопку "Start Analyze", ждем немного (или много- зависит от размера картинок и количества присутствующих цветов) и получаем в окне отчета информацию по цветам, которые присутствуют только в яблоках, но отсутствуют на всех картинках леса! Вот по этим значениям цвета и можно автоматически найти фрукты. Чем больше значение Frequency (частота), тем с большей вероятностью можно обнаружить яблоко по данному цвету. Максимально возможное значение 100% (оно же является оптимальным и достаточным для поиска).
Программа позволяет искать не только отдельные цвета, но также может подобрать оптимальное сочетание 2-х и более цветов, дающих максимальное значение Frequency и Density (плотность цвета).
Также добавлена экспериментальная функция поиска шестнадцатеричного диапазона цветов, который дает максимальное значение Frequency.

В программе встречается несколько параметров цвета (или комбинаций цветов):
Frequency - наиболее важный параметр- частота появления цвета в наборе изображений. Чем выше частота - тем больше вероятность найти объект по данному цвету. Оптимальное значение 100%
Density - средняя плотность цвета. Чем выше средняя плотность, тем больше пикселей этого цвета на изображениях. Нужно учесть, что "больше" - не всегда значит "лучше". Например, цвет A встречается в 100% изображений объекта всего в 1 пикселе. Цвет B встречается в 50% изображений объекта, но зато в 500 пикселах в каждом. Таким образом плотность цвета B гораздо выше, но объект можно найти в 100% случаев именно по цвету A. Таким образом, параметр Frequency гораздо важнее параметра Density.
Duplication (Dubl, Dupl) - дублирование информации. Применяется к комбинации цветов или к диапазону цветов. Чем больше коэффициент дублирования, тем лучше. (Если он больше 1.0 - уже хорошо!). Его еще можно назвать "коэффициентом запаса надежности" при поиске объекта.

Анализ изображений и поиск оптимального диапазона цветов занимают довольно много времени (возможно несколько минут), так что просьба проявить терпение и подождать пока программа досчитает.
Результаты анализа и всех расчетов/поисков появляются в окне Отчета (добавляются в начало). Текст отчета можно выделить, а затем скопировать в буфер обмена нажав Ctrl+C или Ctrl+Ins.

При пользовании программой зацикливаться на ёжиках и яблоках не обязательно - можно искать и другие объекты/мобов. ;-)
Кроме того, чем больше различных изображений объекта для анализа у вас будет, тем более точный результат даст программа!
Лично я для подбора уникальных цветов использую не менее 7-10 различных изображений объекта (иногда до 15-20) и столько же различных изображений фона без этого предмета. Вообще, чем больше, тем лучше (но считает дольше).

Для работы программы нужно иметь предварительно установленный пакет Microsoft .NET Framework 3.5 SP1, который можно скачать здесь.
Вверх
kellas
ну а как она связана с пилотом ???
точнее как рисунок связать со скриптом
а так штука нужная)))
Вверх
Zeleax
Цитата(kellas @ 31.10.2010, 11:58)

ну а как она связана с пилотом ???
точнее как рисунок связать со скриптом
а так штука нужная)))

после анализа изображений в нижних квадратах остаются только те цветные точки, которые нужно скриптами искать с помощью findcolor.
Цвета этих точек лучше определять увеличив картинку экранной лупой+ определение цвета с помощью UOPilot. Или FastStone Capture- очень удобно! (там есть встроенная экранная лупа) - тоже сразу показывает десятичное и HEX значения цвета.
Буду дорабатывать программу - может сделаю встроенный определитель цвета точек )
Вверх
DarkMaster
И все же не до конца понятно что делать с найденными различиями... Руками в пилот? Может хоть тхт под массив генерить? Так же возможна связь через буфер обмена. Насколько быстро происходит обработка? Если все происходит достаточно быстро нет ли у тебя желания сделать обработку на лету без скриншотов, заменив по факту финд колор?
Вверх
Zeleax
Цитата(DarkMaster @ 31.10.2010, 12:22)

И все же не до конца понятно что делать с найденными различиями... Руками в пилот? Может хоть тхт под массив генерить? Так же возможна связь через буфер обмена. Насколько быстро происходит обработка? Если все происходит достаточно быстро нет ли у тебя желания сделать обработку на лету без скриншотов, заменив по факту финд колор?

Пока что руками в пилот, цвета для поиска мобов то есть... Я еще близко с пилотом не знаком, только форум читал, вот и буду учиться применять UCS+UOPilot в реальной ситуации. Если есть пожелания, то желательно излагать подробнее.
В принципе, для поиска моба достаточно цвета 1 любой найденной точки, так как этот цвет встречается на ВСЕХ скринах мобов, но его нигде нет на скринах фонов.

Обработка занимает 3-30 секунд для каждого скрина фона (мобы обрабатываются быстро).

За подсказку насчет выгрузки массива в текстовый файл - спасибо =)
Дай, пожалуйста, пример такого файла - как хотелось чтобы оно выглядело
Вверх
DarkMaster
Посидел подумал как будет лучше реализовать. Во 1 хотелось бы чтобы работал не только с отдельными файлами, но и с папками для того, чтобы сравнивать сразу несколько скриншотов. Разные ракурсы могут дать разные результаты. Так же очень бы хотелось счетчик совпадений. Т.е. взяли мы моба, нашли уникальные цвета, но зачмем нам перебирать тот цвет который встречается 1 раз, если есть тот который бывает 100 раз. Файлик очень простой:
x y количество_совпадений
разделитель табуляция. Как наверное сам уже догадался, не помешает сортировка от большего к меньшему по количеству совпадений.
Вверх
Zeleax
Цитата(DarkMaster @ 1.11.2010, 20:00)

Файлик очень простой:
x y количество_совпадений
разделитель табуляция. Как наверное сам уже догадался, не помешает сортировка от большего к меньшему по количеству совпадений.

Наверное,
цвет количество_совпадений
?

И цвет в каком лучше формате десятичном или шестнадцатеричном?
Вверх
DarkMaster
Правильно цвет. Я очепятался чуток.
Цвет в десятичном инвертированном (в пилотном). Можно добавить еще обычный шестнадцатиричный, чтобы можно было понять что было найдено, но это не критично.
Вверх
Zeleax
Цитата(DarkMaster @ 1.11.2010, 20:00)

Посидел подумал как будет лучше реализовать. Во 1 хотелось бы чтобы работал не только с отдельными файлами, но и с папками для того, чтобы сравнивать сразу несколько скриншотов. Разные ракурсы могут дать разные результаты. Так же очень бы хотелось счетчик совпадений. Т.е. взяли мы моба, нашли уникальные цвета, но зачмем нам перебирать тот цвет который встречается 1 раз, если есть тот который бывает 100 раз. Файлик очень простой:
x y количество_совпадений
разделитель табуляция. Как наверное сам уже догадался, не помешает сортировка от большего к меньшему по количеству совпадений.

Сделал - данные копируются в буфер обмена. Групповую обработку файлов сделаю чуть позже - полностью переработаю программу. Свежая версия, как всегда - на сайте
https://sites.google.com/site/leaxplace/

Кстати, хотел извиниться перед разработчиком UOPilot: цвета он определяет корректно. Тот же FastStone Capture - дает те же десятичные значения цветов, чтои UOPilot. Проблема возникла из-за неправильного преобразования Dec <-> HEX в Numlock Calculator - возможно я там что-то недонажал. Это связано судя по всему с порядком отображения байтов при преобразовании 4-хбайтового целого десятичного в HEX значение.
Вверх
Zeleax
По поводу findcolor...
Может ли он искать сразу несколько цветов хранящихся в массиве ну или хотя бы несколько цветов, например, взятых в круглые скобки и записанных через запятую?

Я сейчас делаю полную переработку программы поиска уникальных цветов (точнее пишу с нуля =) и эта возможность findcolor в скором будущем была бы очень кстати...
Вверх
Invision Power Board © 2001-2024 Invision Power Services, Inc.
Version for Pocket PC © 2006-2024, IPBest Studio.