Как стать автором
Обновить
13
0
Андрей Райц @DrReiz

Архитектор ИИ

Отправить сообщение

Бот для аркады. Часть №2: подключаем OpenCV

Время на прочтение12 мин
Количество просмотров41K

Введение

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

Для обработки изображений возьмем широкораспространенную библиотеку OpenCV. Она неродная (unmanaged) для .net, поэтому подключим ее через wrapper OpenCvSharp.

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


Затрагиваемые темы: выбор библиотеки для обработки изображений, выбор wrapper-а для работы с OpenCV, основные функции OpenCV, выделение движущихся объектов, цветовая модель HSV.


Читать дальше →
Всего голосов 28: ↑25 и ↓3+22
Комментарии11

Бот для DirectX-аркады. Часть №1: устанавливаем контакт

Время на прочтение9 мин
Количество просмотров35K

Введение

imageКаждый, играя, хоть раз думал: «вот бы написать программу, которая играла бы за меня!». Но обычно эта мысль, так мыслью и остается… Постоянно что-то мешает: незнание с чего начать, страх перед неподъемностью задачи, шепоток из-за левого плеча «и зачем это? кому это надо, чтобы программа играла с программой?» и т.д.

В данном цикле статей я собираюсь показать, что, во-первых: «не так страшен черт, как его малюют», а во-вторых: позже собираюсь ответить и на вопрос: «зачем это надо?».

Сейчас начнем с простого. С установления взаимосвязи между игрой и программой-игроком (ботом). В качестве подопытного кролика берется широкоизвестная игра Zuma.

Всякое взаимодействие складывается из двух процессов: отправки данных «им» и получения данных от «них». В Zuma всё управление делается мышой, а обратную связь игра выдает с помощью изображения. Соответственно, перво-наперво необходимо научиться программно эмулировать поведение мыши и получать изображение от игры.

Основная цель этой статьи: получить программу, которая самостоятельно раз за разом заходит в игровой процесс, там что-то делает, а при game over-е начинает всё заново. Далее этот каркас будет развиваться в направлении, чтобы бот всё дальше и всё дольше продержался в игре до game over-а.


Решаемые вспомогательные подзадачи: эмуляция мыши, перенаправление мыши на виртуальную машину, захват изображения.

Читать дальше →
Всего голосов 35: ↑30 и ↓5+25
Комментарии12

Почему сравнение «ведет себя как робот» по смыслу означает «ведет себя как дурак»?

Время на прочтение3 мин
Количество просмотров7K
Сравнивая человека с роботом (или автоматом) мы при этом подразумеваем, что поведение такого человека описывается слепым алгоритмом: человек механистически выполняет набор действий, не ставя перед собой вопросы «зачем эти действия выполняются?» и «почему ожидается, что эти действия приведут к ожидаемому результату?».

Почти все программы ведут себя подобным механистическим образом. Но ведь есть и другой подход.

Алгоритмы можно поделить на две большие группы: целестремительные и слепые алгоритмы.
— Целестремительный алгоритм имеет явную цель, которую старается достичь.
— Слепой алгоритм себе явно цель не ставит, но в результате применения алгоритма цель всё равно достигается.

Читать дальше →
Всего голосов 20: ↑6 и ↓14-8
Комментарии26

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность