Вверх ↑
Этот топик читают: Гость
Ответов: 758
Рейтинг: 112
#31: 2014-10-06 16:24:31 ЛС | профиль | цитата
Леонид, Может Вам поможет следующий пример - с поиском кнопки на экране по картинке
code_34390.txt
P.S.: Перебор происходит по всем пикселам экрана, поэтому иногда может тормозить. Если у кого есть идеи по ускорению, очень интересно посмотреть
карма: 1

0
файлы: 1code_34390.txt [4.5KB] [326]
Ответов: 8959
Рейтинг: 824
#32: 2014-10-06 17:19:41 ЛС | профиль | цитата
miver, конечно в циклах for x := 0 to Bmp.width-subbmp.width-1 do надо посчитать заранее выведя расчёт из цикла, чуть прибавится скорость, да и обе картинки на первом, "грубом" этапе можно уменьшить раза в три-четыре, а на втором этапе по натуральным размерам уже искать точное положение.
(Надо попробовать линию разложить в Фурье и сравнивать спектр сразу всей линии, получится-ли быстрее )
карма: 19

0
Ответов: 758
Рейтинг: 112
#33: 2014-10-06 19:16:19 ЛС | профиль | цитата
Нашел исходник FindImgFast.rar
Вот моя проба адаптации, поиск очень быстрый
code_34391.txt
------------ Дoбавленo в 19.16:
Только при выходе выводит ошибку, не могу понять где
карма: 1

0
файлы: 1code_34391.txt [5.5KB] [375]
Ответов: 8959
Рейтинг: 824
#34: 2014-10-06 23:10:19 ЛС | профиль | цитата
miver, во-во, по линиям сравнивать гораздо быстрее (Но абсолютное совпадение может и не сработать, а если искать "похожесть", залезешь в такие дебри, что и никакого терпения не хватит результата дождаться )
карма: 19

0
Ответов: 758
Рейтинг: 112
#35: 2014-10-07 12:13:16 ЛС | профиль | цитата
Выкладываю окончательный вариант
code_34393.txt


Леонид писал(а):
во-во, по линиям сравнивать гораздо быстрее
А я думал что там буферизация проходит и создается массив из точек изображения. И массивы сравнить намного быстрее

Леонид писал(а):
Но абсолютное совпадение может и не сработать, а если искать "похожесть", залезешь в такие дебри, что и никакого терпения не хватит результата дождаться
Перед мной не стояла такая задача Но если покажешь конкретное задание из двух картинок, то можно попробовать
Без проблем можно прицепить прозрачность какого-то цвета на подкартинке и поиск по монохромному контуру подкартинки, но мне пока хватит и так как есть
карма: 1

0
файлы: 1code_34393.txt [5.4KB] [319]
Ответов: 8959
Рейтинг: 824
#36: 2014-10-07 14:18:43 ЛС | профиль | цитата
miver, насколько помню выкладывал сравнение картинок: приводил к одному размеру, загонял в Stream и сравнивал по байтам Пирсоном:
Сравнение1.jpg
Сравнение2.jpg
code_34398.txt
карма: 19

0
файлы: 3Сравнение1.jpg [32.7KB] [702], Сравнение2.jpg [32.2KB] [652], code_34398.txt [7.5KB] [352]
Ответов: 758
Рейтинг: 112
#37: 2014-10-07 15:03:35 ЛС | профиль | цитата
Леонид, А к поиску картинки это какое отношение имеет
карма: 1

0
Ответов: 8959
Рейтинг: 824
#38: 2014-10-07 15:41:34 ЛС | профиль | цитата
miver, так в поиске и призводится сравнение искомой картинки с частью другой, и сравнение самая важная часть поиска, а уж перебор координат начала -- необходимая часть
карма: 19

0
Ответов: 758
Рейтинг: 112
#39: 2014-10-08 11:11:34 ЛС | профиль | цитата
Леонид, Это конечно не Пирсон, но на мой взгляд получилось хорошо
Поиск наилучшего совпадения
code_34400.txt

Поиск с ограничением по ошибке. Сохранил скриншот в .jpg с 50% качеством
scrnfind.rar

карма: 1

1
файлы: 2code_34400.txt [13.9KB] [3410], scrnfind.rar [28.2KB] [471]
Голосовали:Леонид
Ответов: 327
Рейтинг: 5
#40: 2014-10-08 11:58:26 ЛС | профиль | цитата
Вы что-то далеко ушли)) Изначально имелось ввиду "тупое" нажатие кнопки, ну и чтобы это работало без фокуса для 3D игр.
Самое обидное, я знаю что для WoW это реально, уже давненько существует программа "WoW-Loop", она без проблем нажимает кнопки от 0 до 9.
Обидно что нельзя запихнуть любой exe файл в хиасм, и чтобы сразу в виде схемы рисовалась работа программы))

P.S.
Мне кажется, что отслеживать состояние(или поиск кнопки) в игре по картинке - это извращенство.
карма: 0

0
Ответов: 8959
Рейтинг: 824
#41: 2014-10-08 12:10:35 ЛС | профиль | цитата
miver, замечательно!
knoot0279,
Боян писал(а):
..Растекашется мыслию по древу..

miver писал(а):
..Это конечно не Пирсон..
Поэтому и маленькое пятнышко (отмечено кружком)
Нашла.jpg
Не_нашла.jpg
помешало найти мой любимый Excel
карма: 19

0
файлы: 2Нашла.jpg [25.2KB] [587], Не_нашла.jpg [11.9KB] [660]
Ответов: 327
Рейтинг: 5
#42: 2014-10-08 13:17:05 ЛС | профиль | цитата
нашел пример на делфи. вот не знаю... будет без фокуса работать или нет, в примере не отправляется окну, а просто нажимается.
#pas
keybd_event(byte('1'), 0, 0, 0);
keybd_event(byte('1'), 0, KEYEVENTF_KEYUP, 0);
код нажимает клавишу "1".
можно ли это переиначить под хиасм и с отправкой окну, а не тупой долбежкой куда ни попадя?
карма: 0

0
Разработчик
Ответов: 26305
Рейтинг: 2146
#43: 2014-10-08 14:09:48 ЛС | профиль | цитата
knoot0279 писал(а):
можно ли это переиначить под хиасм

Между прочим, компонент KeyEvent использует именно функцию keybd_event
карма: 22

0
Ответов: 4664
Рейтинг: 767
#44: 2014-10-08 14:59:28 ЛС | профиль | цитата
Попробуйте в DirectX приложениях: send input demo.sha
Я в одной игре проверил - работает. Но не знаю, точно ли она через DirectInput получает ввод.
[offtop]Нюанс: для того, чтобы вводить заглавные буквы, нужно предварительно зажимать Shift[/offtop]
карма: 26

0
Ответов: 758
Рейтинг: 112
#45: 2014-10-08 15:03:26 ЛС | профиль | цитата
knoot0279 писал(а):
Изначально имелось ввиду "тупое" нажатие кнопки, ну и чтобы это работало без фокуса для 3D игр.
Что имелось ввиду, то я и представил. В моей первой схеме этой темы эмулируэтся нажатие клавиш на устройстве. В окно никакие сообщения не посылаются. А клик нужен только для активации строки ввода. То есть делается все то, что делает человек.

knoot0279 писал(а):
Мне кажется, что отслеживать состояние(или поиск кнопки) в игре по картинке - это извращенство.
А никто и не предлагает этого делать. Все махинации с картинками - просто мозговой шторм, аля - на опережение будущих вопросов "Можно ли найти кнопку на экране и нажать ее"
карма: 1

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)