![]() |
Алгоритм поиска в двумерном массиве
Имеется двумерный массив элементами которого являются цвета пикселей (попросту - скриншот :) ). Необходимо найти квадрат заданного размера (для примера 100х100) который в себе содержит заданное количество пиксели заданного цвета (например цветов три: 20 пикселей красного цвета, 30 пикселей синего и 10 желтого). Для чего это нужно: я знаю, что на скриншоте присутствует объект непостоянной формы (а значит найти кусок изображения по шаблону не получится), но я знаю, что объект всегда содержит описанный выше набор пикселей. Существую ли алгоритмы решения подобной задачи?
|
nslim13, ну а что мешает просто по порядку перебрать все возможные варианты и подсчитать кол-во пикселей заданных цветов в них? Понимаю, не самый оптимальный способ. Но самый очевидный. То есть сначала берёшь квадрат от точки 0:0 и считаешь пиксели нужных цветов. Потом 0:1, потом 0:2 и т.д. Дойдёшь до конца - смещаешься на 1 вниз и по-новой: 1:0, 1:1, 1:2 и т.д.
|
nslim13, никак не получается 100x100 из 60 пикселей. И даже квадрат из 60 пикселей — ну никак не получается.
Цитата:
|
Цитата:
Цитата:
|
nslim13, звучит слишком абстрактно. Корректней выражайте желания.
Помниться пару лет назад один из участников форума писал управлялку для он-лайн игры. Чтобы она сама по локациям с заданным промежутком времени кликала и денежку собирала. |
Решал свои проблемы, заодно наткнулся на подборку автокликкеров.
Запись действий пользователя (клавиатура + мышь) воспроизведение, просто нажималки и прочее. nslim13, там что-то и про цветовые пятна встречалось. Посмотрите. |
Раз уж речь зашла об автокликерах - меня интересует алгоритм, как findheapcolor в kibor-bot (ищет области на которых есть скученности пикселей определенных цветов)
|
nslim13, еще раз, полнее выражайте желаемое.
Желательно с кликабельными примерами, чтобы в гугл два раза не лазить. https://habrahabr.ru/post/111339/ http://forum.codenet.ru/q52181/Прогр...шот+на+C%2B%2B Устал, ничего более внятного ответить не сумею. |
http://kibor-bot.com/forum/topic.php?forum=1&topic=37
Меня интересует реализация вот этогй функции. Возможно я просто неверно выражаюсь. Может это не поиск, а кластеризация, или классификация, или как-то еще... Я написал для себя мини прогру, которая находит фрагмент изображения на скрине и возвращает его координаты (image template matching). Фрагмент в виде файла .bmp. Скрин и фрагмент преобразуются в двумерный массив целочисленных значений цветов пикселей. После этого осуществляется попиксельное сравнение двух массивов на предмет вхождения одного в другой. Работало, но медленно. Для ускорения я адаптировал под себя алгоритм Бойера-Мура, заменив им тупой перебор. Скорость поиска увеличилась в среднем в 5 раз. Приятно :) Тепер я хочу расширить функционал, добавив такую же функцию, как по ссылке выше, и чую, что кибор реализовал ее не тупым перебором пикселей. Представьте сколько времени будет выполняться один проход по fullHD скрину... |
Время: 15:05. |
Время: 15:05.
© OSzone.net 2001-