PixelSearch - Вопросы относительно мироздания
-
Belfigor
PixelSearch - Вопросы относительно мироздания
Мы с приятелем собираемся переписать функцию пикселсеарч. Подскажите пожалуйста, в какую длл нужно обращаться, при попытке выяснить какого цвета пиксель она рисует на экране в заданых координатах?
Предпосылки такого порыва таковы:
когда мы указываем шейд пиксельсерчу - он начинает шагать по каналам в каждом элементе цвета (отдельно в р, отдельно в г, отдельно в б) или сразу во всех трёх?
т.е. получается. она может работать как вложенный, один в другой цикл фор некст на пиксельгетколор, и сличение с нужными параметрами.
А может работать вообще хз как.
Как это работает?
В любом случае, пока - это не удовлетворяет нашим потребностям в скорости работы. Мы хотим ускорить работу и переписать сам пиксель серч а при необходимости и пиксельгеткалор
Предпосылки такого порыва таковы:
когда мы указываем шейд пиксельсерчу - он начинает шагать по каналам в каждом элементе цвета (отдельно в р, отдельно в г, отдельно в б) или сразу во всех трёх?
т.е. получается. она может работать как вложенный, один в другой цикл фор некст на пиксельгетколор, и сличение с нужными параметрами.
А может работать вообще хз как.
Как это работает?
В любом случае, пока - это не удовлетворяет нашим потребностям в скорости работы. Мы хотим ускорить работу и переписать сам пиксель серч а при необходимости и пиксельгеткалор
-
Nik_rus
Re: PixelSearch - Вопросы относительно мироздания
Думаю пиксель ищется алгоритмом:
1.Поиск по каналу R
2.Если совпал - проверка по G (если нет, топает дальше)
3.Если совпал и G, то проверка идет по B и тут уже реторн резулт.
Если это не так, то думаю на пару милисекунд этот способ бырее
А сам пиксел серч имхо зашит в компилятор и поставляется вместе с сабжем в откомпиленом скрипте.
1.Поиск по каналу R
2.Если совпал - проверка по G (если нет, топает дальше)
3.Если совпал и G, то проверка идет по B и тут уже реторн резулт.
Если это не так, то думаю на пару милисекунд этот способ бырее
А сам пиксел серч имхо зашит в компилятор и поставляется вместе с сабжем в откомпиленом скрипте.
-
Belfigor
Re: PixelSearch - Вопросы относительно мироздания
Цитата Belfigor:
не удовлетворяет нашим потребностям в скорости работы
цитата из справки:
Код:
это значит, что нужно:
- провести анализ контента сканируемого окна,
- отсечь области, где искомый объект никогда не появляется,
- разбить окно на блоки... скажем 3x3 = 9 прямоугольных областей,
- отсортировать эти области в порядке уменьшения вероятности появления искомого объекта,
- сканировать блоки в установленной последовательности.
Цитата Belfigor:
Мы с приятелем собираемся переписать функцию пикселсеарч. Подскажите пожалуйста, в какую длл нужно обращаться, при попытке выяснить какого цвета пиксель она рисует на экране в заданых координатах?
для того, чтобы получить хоть какое-то ускорение, надо писать свою DLL, и желательно на АСМе
не удовлетворяет нашим потребностям в скорости работы
PixelSearch - Вопросы относительно мироздания
цитата из справки:
Код:
Код: Выделить всё
Although PixelSearch is optimized, narrowing the search area helps speed up the result.это значит, что нужно:
- провести анализ контента сканируемого окна,
- отсечь области, где искомый объект никогда не появляется,
- разбить окно на блоки... скажем 3x3 = 9 прямоугольных областей,
- отсортировать эти области в порядке уменьшения вероятности появления искомого объекта,
- сканировать блоки в установленной последовательности.
Цитата Belfigor:
Мы с приятелем собираемся переписать функцию пикселсеарч. Подскажите пожалуйста, в какую длл нужно обращаться, при попытке выяснить какого цвета пиксель она рисует на экране в заданых координатах?
PixelSearch - Вопросы относительно мироздания
для того, чтобы получить хоть какое-то ускорение, надо писать свою DLL, и желательно на АСМе
-
amel27
Re: PixelSearch - Вопросы относительно мироздания
это значит, что нужно:
- провести анализ контента сканируемого окна,
- отсечь области, где искомый объект никогда не появляется,
- разбить окно на блоки... скажем 3x3 = 9 прямоугольных областей,
- отсортировать эти области в порядке уменьшения вероятности появления искомого объекта,
- сканировать блоки в установленной последовательности.
-----=========---------
Добрый день! Я тот самый "приятель".
Дело вот в чём:
Мы всё это сделали.
У нас более 30 областей на экране размером 23х18 пикс.
И всё это должно сканироваться хотя бы раз в 50 мс.
А у нас получается 1 раз в 300-400 мс заканчивается сканирование.
Есть ли более быстрая альтернатива найти в искомых областях искомые пиксели?
Если уж с переписанием пиксельсерча всё так сложно?
- провести анализ контента сканируемого окна,
- отсечь области, где искомый объект никогда не появляется,
- разбить окно на блоки... скажем 3x3 = 9 прямоугольных областей,
- отсортировать эти области в порядке уменьшения вероятности появления искомого объекта,
- сканировать блоки в установленной последовательности.
-----=========---------
Добрый день! Я тот самый "приятель".
Дело вот в чём:
Мы всё это сделали.
У нас более 30 областей на экране размером 23х18 пикс.
И всё это должно сканироваться хотя бы раз в 50 мс.
А у нас получается 1 раз в 300-400 мс заканчивается сканирование.
Есть ли более быстрая альтернатива найти в искомых областях искомые пиксели?
Если уж с переписанием пиксельсерча всё так сложно?
-
Archy26
Re: PixelSearch - Вопросы относительно мироздания
это значит, что нужно:
- провести анализ контента сканируемого окна,
- отсечь области, где искомый объект никогда не появляется,
- разбить окно на блоки... скажем 3x3 = 9 прямоугольных областей,
- отсортировать эти области в порядке уменьшения вероятности появления искомого объекта,
- сканировать блоки в установленной последовательности.
-----=========---------
Добрый день! Я тот самый "приятель".
Дело вот в чём:
Мы всё это сделали.
У нас более 30 областей на экране размером 23х18 пикс.
И всё это должно сканироваться хотя бы раз в 50 мс.
А у нас получается 1 раз в 300-400 мс заканчивается сканирование.
Есть ли более быстрая альтернатива найти в искомых областях искомые пиксели?
Если уж с переписанием пиксельсерча всё так сложно?
- провести анализ контента сканируемого окна,
- отсечь области, где искомый объект никогда не появляется,
- разбить окно на блоки... скажем 3x3 = 9 прямоугольных областей,
- отсортировать эти области в порядке уменьшения вероятности появления искомого объекта,
- сканировать блоки в установленной последовательности.
-----=========---------
Добрый день! Я тот самый "приятель".
Дело вот в чём:
Мы всё это сделали.
У нас более 30 областей на экране размером 23х18 пикс.
И всё это должно сканироваться хотя бы раз в 50 мс.
А у нас получается 1 раз в 300-400 мс заканчивается сканирование.
Есть ли более быстрая альтернатива найти в искомых областях искомые пиксели?
Если уж с переписанием пиксельсерча всё так сложно?
-
Nik_rus
Re: PixelSearch - Вопросы относительно мироздания
Ладно бы UDF, но тут то основной синтаксис... а он вшит в сам интерпретатор.
Топайте к создателям автоита и предлагайте свое решение.
Топайте к создателям автоита и предлагайте свое решение.
-
SyDr
Re: PixelSearch - Вопросы относительно мироздания
Много ли таких пикселей на экране?
Обязательно ли есть такой пиксел на экране?
Нужен один пиксел или все?
Это конкретно один пиксель или их целая группа? (Например прямоугольник на каком-то фоне).
Можно пример того, что надо найти? >_
Обязательно ли есть такой пиксел на экране?
Нужен один пиксел или все?
Это конкретно один пиксель или их целая группа? (Например прямоугольник на каком-то фоне).
Можно пример того, что надо найти? >_
-
Archy26
Re: PixelSearch - Вопросы относительно мироздания
1) На экране таких пикселей порядка 3-4х тысяч
2) Такой пиксел не обязательно есть в области сканирования
3) Нужны ВСЕ пикселы
4) Это последовательность белых или близких к белому цвету пикселей, напоминающая иконку размером 23х18 пикселей.
5)
ххххххххххххххххххххххх
ххххххх00000000ххххххх
ххх000000000000000ххх
ххх0000хххххххх0000ххх
х0х000хххххххххх0000хх
х00000хххххххххх0000хх
х00000хххххххххх0000хх
х000000ххххххххх0000хх
х0000000хххххххх0000хх
х00000000ххххххх0000хх
х0000000хххххххх0000хх
х000000ххххххххх0000хх
х00000хххххххххх0000хх
х0х000хххххххххх0000хх
ххх000хххххххххх0000хх
ххх000000000000000ххх
ххххххх00000000ххххххх
ххххххххххххххххххххххх
Примерно так.
2) Такой пиксел не обязательно есть в области сканирования
3) Нужны ВСЕ пикселы
4) Это последовательность белых или близких к белому цвету пикселей, напоминающая иконку размером 23х18 пикселей.
5)
ххххххххххххххххххххххх
ххххххх00000000ххххххх
ххх000000000000000ххх
ххх0000хххххххх0000ххх
х0х000хххххххххх0000хх
х00000хххххххххх0000хх
х00000хххххххххх0000хх
х000000ххххххххх0000хх
х0000000хххххххх0000хх
х00000000ххххххх0000хх
х0000000хххххххх0000хх
х000000ххххххххх0000хх
х00000хххххххххх0000хх
х0х000хххххххххх0000хх
ххх000хххххххххх0000хх
ххх000000000000000ххх
ххххххх00000000ххххххх
ххххххххххххххххххххххх
Примерно так.
-
SyDr
Re: PixelSearch - Вопросы относительно мироздания
Ясно.
Думаю, все помнят морской бой? Так вот, стратегия нахождения четырёхклеточного корабля состояла в том, что обстреливался каждый четвёртый квадрат игрового поля. С такой тактикой его можно найти максимум за 24 хода. Если же просто стрелять по каждой клетке поля - вполне возможно, что он будет в правом нижнем углу. А на это нужно раза в 3 больше ходов.
Таким образом, необходимо выделить в сканируемой области пиксели, цвет которых необходимо обязательно проверить. И проверять только их. При совпадени - проверять область.
Пример:
x - любой не нужный цвет
o - нужный цвет
Нужная картинка имеет вид (квадрат три на три):
xxxxx
xooox
xooox
xooox
xxxxx
Тогда в поле размером 10 на 10 необходимо будет проверить:
xxxxxxxxxx
xxxxxxxxxx
xxhxxhxxxh
xxxxxxxxxx
xxxxxxxxxx
xxhxxhxxxh
xxxxxxxxxx
xxxxxxxxxx
xxhxxhxxxh
xxxxxxxxxx
Чтобы узнать есть ли здесь картинка нужно проверить 9 пикселей (из 100). Ну и потом уже просто будет найти сам квадрат.
Хотя с такой иконкой будет посложнее. Но принцип, думаю, понятен.
Думаю, все помнят морской бой? Так вот, стратегия нахождения четырёхклеточного корабля состояла в том, что обстреливался каждый четвёртый квадрат игрового поля. С такой тактикой его можно найти максимум за 24 хода. Если же просто стрелять по каждой клетке поля - вполне возможно, что он будет в правом нижнем углу. А на это нужно раза в 3 больше ходов.
Таким образом, необходимо выделить в сканируемой области пиксели, цвет которых необходимо обязательно проверить. И проверять только их. При совпадени - проверять область.
Пример:
x - любой не нужный цвет
o - нужный цвет
Нужная картинка имеет вид (квадрат три на три):
xxxxx
xooox
xooox
xooox
xxxxx
Тогда в поле размером 10 на 10 необходимо будет проверить:
xxxxxxxxxx
xxxxxxxxxx
xxhxxhxxxh
xxxxxxxxxx
xxxxxxxxxx
xxhxxhxxxh
xxxxxxxxxx
xxxxxxxxxx
xxhxxhxxxh
xxxxxxxxxx
Чтобы узнать есть ли здесь картинка нужно проверить 9 пикселей (из 100). Ну и потом уже просто будет найти сам квадрат.
Хотя с такой иконкой будет посложнее. Но принцип, думаю, понятен.
-
Archy26
Re: PixelSearch - Вопросы относительно мироздания
четай выше.
Всё это уже сделано.
мы сравниваем одну с иконку с другой.
Для этого нужно найти большинство пикселей.
короче рекомендую перечитать тему, она была создана когда мы зашли в тупик.
Всё это уже сделано.
мы сравниваем одну с иконку с другой.
Для этого нужно найти большинство пикселей.
короче рекомендую перечитать тему, она была создана когда мы зашли в тупик.