Rambo 0 Жалоба Опубликовано February 26, 2018 Всем привет Не нашел топика и правил публикации, поэтому оставлю пока что здесь. Надеюсь модеры простят. Как видно из заголовка - мне нужна помощь. Я самый настоящий чайник, хотя и получил корочки программиста, но никогда не имел реального опыта.=> Прошу предоставлять информацию. в максимально простом и развернутом виде, если что то будет не понятно, то я переспрошу. Верю в себя и что всё получится. Быстро обучаюсь, так сказать светлая голова. Хочу написать автопилот(бота) для комп. игры. Доступ к процессу закрыт поэтому пришлось искать способы создания компьютерного зрения. После долгих (как ни странно я не додумался загуглить "компьютерное зрение") поисков я вышел на openCV. Рекомендуют работать на плюсах. Думаю меня это устроит если там будут все необходимые средства для реализации решения задачи. Собственно самый главный вопрос, который меня больше всего волнует это как получить доступ к информации выводимой видеокартой на монитор в режиме реального времени, чтобы впоследствии работать с этой информацией и реализовывать функции бота. Работаем с Windows 7, c++,opencv и драйвером nvidia. План: 1. Сначала разбираемся как получить доступ к видеопотоку. Читал про такое понятие как framebuffer, где есть передний и задний буффер, но это о линуксе было. Хотелось бы такую же конструкцию и под Windows. Чтобы понять зачем - обратитесь к пункту 3. Видел кучу способов, где предлагалось скринить или брать getpixel, но ,Боже!!, это должно быть очень долго. Поэтому хотелось бы брать информацию от первоисточника. Надеюсь opencv позволяет это делать. 2. Реализовываем функции распознавания объектов. Видел тут пару топиков. Думаю это не должно быть ОГРОМНОЙ проблемой. Некоторые объекты весьма простые и статичные, такие как окна интерфейса. Их можно найти один раз, чтобы убедиться что они есть. Но ладно, это пока что лирика. И есть мобы. Ну мобы это мобы. Игровая камера имеет зум. Видел топик поиска объектов по контуру, надеюсь он работает с зумящимися объектами. Так же надо уметь определять текст, написанный машинным шрифтом. Для наглядности закинул скриншот. Ёемае! А как тут вставить спойлер??????? Всем привет, кто узнал. 3. Помечаем найденные объекты(окна,клетки свободные для перемещения, мобы), например просто точками в пару пикселей. Как вариант находим их в бек буфере и вносим изменения во фронт бефер. Если это так не работает(что вполне вероятно), то нужно придумать способ реализовать это, чтобы можно было отслеживать работу программы. Я хочу не толь научить машину видеть всё что происходит на мониторе, но и видеть как она это видит. 4.Реализовать самого бота, но об этом пока рано и не относится к тематике форума. Прошу здешних обитателей направлять меня на пути во мраке единиц и нулей. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Rambo 0 Жалоба Опубликовано February 26, 2018 Расскажите как спрятать картинку под спойлер. Я подредактирую Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
iskees 32 Жалоба Опубликовано February 26, 2018 В opencv нет методов для захвата картинки с экрана, да и не должно их там быть. Используйте другие библиотеки или winapi(в том же C# из коробки есть метод CopyFromScreen), по скорости 10fps у вас точно будет, нужно будет больше потом перепишете это место. Проблемы у вас возникнут явно не с этим. И подумайте 10 раз над выбором языка, с++ не самый просто язык. 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Rambo 0 Жалоба Опубликовано February 26, 2018 Может тогда кто-нибудь подскажет как работают программы для стриминга типа OBS studio или тот же фрапс? Я читал что винда защищает железо и просто так к нему не подкопаться и что надо писать свой драйвер или пробовать winapi, но блин! как правильно искать ифнормацию по winapi, ведь я даже не знаю что мне надо. Используйте "другие библиотеки" это и было про copyfromscreen или есть еще варианты? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано February 26, 2018 Есть же софт для стримминга, как я понимаю, та же IP-камера по сути. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Rambo 0 Жалоба Опубликовано February 26, 2018 2 часа назад, Smorodov сказал: Есть же софт для стримминга Оуу! Серьезно?? Софт для стриминга? Какое открытие!! Мы тут посты набиваем или по сути будем общаться? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано February 27, 2018 Ну мне не особо нужно посты накручивать Просто имелось ввиду отладить всю логику на видео из стриммера , а после, если все еще будет нужно, лезть в железки. Ну если горит прям "оооуу !", тогда гуглите "direct3d hook capture". Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
iskees 32 Жалоба Опубликовано February 27, 2018 CopyFromScreen это пример метода который "встроен" в C#, в питоне есть аналоги. Можно вообще на заморачиватся, и взять vlc запустить там захват экрана и пустить все это в rtsp поток, который уже без проблем подхватит opencv. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах