Форум программистов, компьютерный форум, киберфорум
Delphi: Графика, звук, видео
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 24.07.2022
Сообщений: 10
1

Распознавание изображений на экране

24.07.2022, 09:46. Показов 3348. Ответов 39
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите начинающему Дельфиводу - как распознавать изображения на экране? В частности нужно распознать кнопку на экране и кликнуть по ней.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.07.2022, 09:46
Ответы с готовыми решениями:

Распознавание чисел на экране
Я понимаю, что может этот вопрос уже поднимался, искал, но ничего внятного не нашел. Вот...

Распознавание изображений
Слышал что .net даёт возможность распознавать изображения. Какие это именно средства. И вобще...

Распознавание изображений
Посмотрите? Почитайте? « Self-driving truck boss: 'Supervised machine learning doesn’t live up...

Распознавание изображений
Уважаемые подскажите с сл.вопросом: Так получилось что я раздолбай прогулял весь курс по С++, но...

Распознавание происходящего на экране
Нужно просто раз в секунду проверять является ли определенная область экрана определенного цвета,...

39
Модератор
9267 / 6045 / 2380
Регистрация: 21.01.2014
Сообщений: 25,815
Записей в блоге: 3
24.07.2022, 11:29 2
Если верить А.П. Чехову, краткость - сестра таланта... Но не в Вашем случае. Поэтому поднапрягитесь и объясните подробнее, что Вы хотите...
0
Модератор
3635 / 2153 / 762
Регистрация: 15.11.2015
Сообщений: 8,640
24.07.2022, 11:51 3
CoolDel, вот в этой теме Побитовые операции с памятью искали небольшую картинку внутри большой, поиск по всей большой картинке.
0
Заблокирован
24.07.2022, 13:09 4
Цитата Сообщение от CoolDel Посмотреть сообщение
В частности нужно распознать кнопку на экране и кликнуть по ней.
Кнопка на экране - это окно какого приложения?
0
Модератор
3635 / 2153 / 762
Регистрация: 15.11.2015
Сообщений: 8,640
24.07.2022, 13:50 5
Verevkin, человек хочет пойти сложным путём. Зачем его сбивать?
0
Заблокирован
24.07.2022, 14:27 6
Цитата Сообщение от AzAtom Посмотреть сообщение
человек хочет пойти сложным путём. Зачем его сбивать?
Хочется мне так. Я добрый дядька.
0
11 / 11 / 0
Регистрация: 29.06.2013
Сообщений: 93
24.07.2022, 14:40 7
"ломать капчу делфи"
0
53 / 48 / 5
Регистрация: 18.11.2018
Сообщений: 265
24.07.2022, 18:37 8
Цитата Сообщение от AzAtom Посмотреть сообщение
человек хочет пойти сложным путём. Зачем его сбивать
Ох был я там...
Понравилось.
CoolDel, Задача сильно творческая, вариантов решения там штук 5 минимум есть.
1 Точное совпадение, тут Побитовые операции с памятью
Хорошо всё описано,но для начинающего сложновато.(Имею в виду ASM реализацию)
2 Примерное совпадение, тут есть два подварианта минимум.
2.а Искать особые точки (SIFT/SURF)
2.b Поиск стабильных областей на изображении (MSER)
Оба варианта вычислительно интенсивные, и делать их на процессоре имеет смысл только в образовательных целях.
В играх не получится отслеживать быстрые объекты.
...
В общем тут ещё должна быть простыня на 150 строк , но мне лень.
Для каждой конкретной задачи лучше искать своё, творческое решение, к примеру
В вашем случае не самый тяжёлый вариант.
Заскринить кнопку, вычитать с неё массив цветов.
Построить 8-ричное дерево цветов.
Задать предполагаемые размеры кнопки(чтобы можно было искать на нескольких разрешениях экранов)
И далее, при скриншоте экрана пробегать по массиву цветов и учитывать только те что есть в дереве
Далее, скользящее окно(размера кнопки)
Если в окне >= к примеру 0,75 похожих цветов то это кнопка.
Напомню играть параметрами (размер окна,процент совпадения) можно для каждого своего случая индивидуально.
И да я сам это только собираюсь писать ещё
К этому всему добавить пяток проверок на границы и чуть причесать будет сносно работать.
Можно не трогать octree а сделать поиск максимально "частого" цвета в кнопке , тут тогда будет лучше работать не с RGB а с HSL.
Всё, харош, а то я начинаю приблежаться к тем заветным 150 строкам

Добавлено через 12 минут
https://www.3delite.hu/Object%... brary.html
Тут готовая либа.
Потрогать покрутить.Сам не пользовался, но делает примерно то что задумано.
Из интересного работа на видеокарте(пахнет хорошим ускорением)
На деле же 12 ядерный проц в 1,7 раза быстрее чем полупрофессиональная видеокарта T400
В любом случае универсальные средства всегда медленней частных решений.
0
0 / 0 / 0
Регистрация: 24.07.2022
Сообщений: 10
26.07.2022, 20:41  [ТС] 9
очень жаль, что простого решения нет. хотелось бы библиотеку вроде opencv или pyautogui как в python
0
53 / 48 / 5
Регистрация: 18.11.2018
Сообщений: 265
26.07.2022, 20:45 10
Чтобы полноценно с библиотеками работать, было бы очень не плохо понимать алгоритмы изнутри.
Как следствие более точно и правильно выбирать области применения.
0
5786 / 4528 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
27.07.2022, 08:47 11
Цитата Сообщение от CoolDel Посмотреть сообщение
хотелось бы библиотеку
когда хочется, идем на гитхаб и ищем OpenCV Delphi
и находим
0
0 / 0 / 0
Регистрация: 24.07.2022
Сообщений: 10
30.07.2022, 14:33  [ТС] 12
Короче программисты тут диванные. По делу высказался только один пользователь "Иван Ёжик", за, что ему и спасибо. Остальные - лишь бы ляпнуть языком и написать хоть бы, что.
0
Заблокирован
30.07.2022, 14:36 13
Цитата Сообщение от CoolDel Посмотреть сообщение
По делу высказался только один пользователь "Иван Ёжик", за, что ему и спасибо.
Помогло? Покажи результаты.
0
53 / 48 / 5
Регистрация: 18.11.2018
Сообщений: 265
30.07.2022, 19:49 14
CoolDel, Я тут самый диванный.
я настолько ленивый что код совсем не пишу
https://youtu.be/to7THc2W4uA
Мои эксперименты двухлетней давности...

Добавлено через 3 часа 45 минут

Ещё немного творчества по распознаванию самым простым методом.
Код взят из сети и головы... доведён до нужной степени приемлемости, это опять старые эксперименты, еле нашёл в закромах.
2
Заблокирован
30.07.2022, 19:59 15
Цитата Сообщение от Иван Ежик Посмотреть сообщение
Мои эксперименты двухлетней давности...
А потом окажется, что пациент хотел найти вот такую кнопку и программно тыкнуть её:

Распознавание изображений на экране

0
53 / 48 / 5
Регистрация: 18.11.2018
Сообщений: 265
30.07.2022, 20:02 16
Цитата Сообщение от Verevkin Посмотреть сообщение
программно тыкнуть её
Кстати во всяких Телеграмах где движок рисования Qt , там нет хендлов кнопки например.
Ну и тыкать кнопки это не так интересно как ковырятся в алгоритмах.

Ну теперь мой эксперимент сам играет таки в "три в ряд", но это не интересно показывать, отрисовки отключены для ещё большего быстродействия...
0
Заблокирован
30.07.2022, 20:09 17
Цитата Сообщение от Иван Ежик Посмотреть сообщение
Кстати во всяких Телеграмах где движок рисования Qt , там нет хендлов кнопки например.
Да, я в курсе. Но пока автор не колется, что там у него.
Автор, колись!

Кликните здесь для просмотра всего текста
Вложения
Тип файла: zip z.zip (2.81 Мб, 113 просмотров)
0
0 / 0 / 0
Регистрация: 24.07.2022
Сообщений: 10
03.08.2022, 14:05  [ТС] 18
Я раскололся в самом начале темы. Мне нужно распознать кнопку не по хэндлу, а основываясь лишь на графической составляющей. Я конечно упростил, мне на самом деле не одну кнопку и не только кнопку нужно распознать. Мне необходимо распознавать ряд элементов пользовательского интерфейса служебной базы данных и взаимодействовать с ним по необходимости. Я неопытный программист (и по профессии вовсе не программист), но Delphi мне ближе чем Python. Я наивно полагал, что в Delphi есть компонент или библиотека для распознавания графики. Вот к примеру на Пайтоне распознавание и клик по элементу интерфейса звучит в одну строку вот так:

pyautogui.click(pyautogui.locateOnScreen('pics/test.png', confidence = 0.95))

Для работы этой строки нужны всего две библиотеки: pyautogui и opencv. Если в Delphi необходимо писать много строк кода, то к сожалению мне это не подходит. На пайтоне необходимый код я по сути написал, но для собственного удобства мне необходимо прилепить к программе основное окно и несколько дополнительных для контроля работы программы в процессе исполнения, а по определенным причинам мне это удобнее\привычнее сделать на Delphi. По этому и стал вопрос - будет ли мне быстрее переписать программу на Delphi.
0
Заблокирован
03.08.2022, 14:11 19
Цитата Сообщение от CoolDel Посмотреть сообщение
Мне необходимо распознавать ряд элементов пользовательского интерфейса служебной базы данных и взаимодействовать с ним по необходимости.
Но ты так и не показал нам даже скриншоты того, чо тебе надо распознавать. Поэтому мы сами начали выдвигать гипотезы и включать телепаторы.
0
53 / 48 / 5
Регистрация: 18.11.2018
Сообщений: 265
03.08.2022, 14:18 20
Цитата Сообщение от CoolDel Посмотреть сообщение
pyautogui.click(pyautogui.locateOnScreen('pics/test.png', confidence = 0.95))
Если это всё что вам нужно то делается написанием в Delphi трёх функций
1 скриншот .
2 поиск
3 клик.
Один раз. 50 строк мне кажется.
Я бы вообще за 3 минуты из старых исходников собрал...Но у меня нету сейчас делфи на компуктере.
И потом постоянно вызывать их именно таким образом в одну строку.
Delphi
1
My.Click(my.find(screenshot, example.png);
Ну или подключить OpenCV...
Вообще от кнопки зависит, если она сложная и переливающаяся+ форму меняет то и CV не сможет помочь
0
03.08.2022, 14:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.08.2022, 14:18
Помогаю со студенческими работами здесь

Распознавание картинок на экране
Доброго времени суток. Задача стоит следующая: в форме есть webbrowser в нем загружаются...

Распознавание цифр на экране
Приветствую всех, кто читает эту тему. Вот вам непростая задача: Общая задача - есть область на...

Нейросетевое распознавание изображений
Всем добрый день! Есть у меня курсовой проект "Нейросетевое распознавание пола человека по...

Распознавание голоса на любом экране
Функция "Окей Google" может работать на любом экране, а можно ли похожую возможность добавить в...

Python распознавание изображения на экране
Я немного новичок в python. Я хочу сделать бота для одной игры, нужно чтобы была проверка нужной...

Обработка изображений (распознавание текста)
Здравствуйте. Задача следующая: имеется сканированный документ с рукописным текстом. Каким образом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru