Перейти к содержимому
Compvision.ru
Rambo

[Help] Работа с видео

Recommended Posts

Всем привет ^_^

Не нашел топика и правил публикации, поэтому оставлю пока что здесь. Надеюсь модеры простят.

Как видно из заголовка - мне нужна помощь. Я самый настоящий чайник, хотя и получил корочки программиста, но никогда не имел реального опыта.=> Прошу предоставлять информацию. в максимально простом  и развернутом виде, если что то будет не понятно, то я переспрошу. Верю в себя и что всё получится. Быстро обучаюсь, так сказать светлая голова.

Хочу написать автопилот(бота) для комп. игры. Доступ к процессу закрыт поэтому пришлось искать способы создания компьютерного зрения. После долгих (как ни странно я не додумался загуглить "компьютерное зрение") поисков я вышел на openCV. Рекомендуют работать на плюсах. Думаю меня это устроит если там будут все необходимые средства для реализации решения задачи.

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

Работаем с Windows 7, c++,opencv и драйвером nvidia.

План:

1. Сначала разбираемся как получить доступ к видеопотоку. Читал про такое понятие как framebuffer, где есть передний и задний буффер, но это о линуксе было. Хотелось бы такую же конструкцию и под Windows. Чтобы понять зачем - обратитесь к пункту 3. Видел кучу способов, где предлагалось скринить или брать getpixel, но ,Боже!!, это должно быть очень долго:mellow:. Поэтому хотелось бы брать информацию от первоисточника. Надеюсь opencv позволяет это делать.:bow::bow:

2. Реализовываем функции распознавания объектов. Видел тут пару топиков. Думаю это не должно быть ОГРОМНОЙ проблемой. Некоторые объекты весьма простые и статичные, такие как окна интерфейса. Их можно найти один раз, чтобы убедиться что они есть. Но ладно, это пока что лирика. И есть мобы. Ну мобы это мобы. Игровая камера имеет зум. Видел топик поиска объектов по контуру, надеюсь он работает с зумящимися объектами. Так же надо уметь определять текст, написанный машинным шрифтом. Для наглядности закинул скриншот. Ёемае! А как тут вставить спойлер??????? Всем привет, кто узнал.

3. Помечаем найденные объекты(окна,клетки свободные для перемещения, мобы),  например просто точками в пару пикселей. Как вариант находим их в бек буфере и вносим изменения во фронт бефер. Если это так не работает(что вполне вероятно), то нужно придумать способ реализовать это, чтобы можно было отслеживать работу программы. Я хочу не толь научить машину видеть всё что происходит на мониторе, но и видеть как она это видит. 

4.Реализовать самого бота, но об этом пока рано и не относится к тематике форума.

 

 

Прошу здешних обитателей направлять меня на пути во мраке единиц и нулей.

1.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Расскажите как спрятать картинку под спойлер. Я подредактирую

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 В opencv нет методов для захвата картинки с экрана, да и не должно их там быть. Используйте другие библиотеки или winapi(в том же C# из коробки есть метод CopyFromScreen), по скорости 10fps у вас точно будет, нужно будет больше потом перепишете это место. Проблемы у вас возникнут явно  не с этим.

И подумайте 10 раз над выбором языка, с++ не самый просто язык.

  • Thanks 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Может тогда кто-нибудь подскажет как работают программы для стриминга типа OBS studio или тот же фрапс? Я читал что винда защищает железо и просто так к нему не подкопаться и что надо писать свой драйвер или пробовать winapi, но блин! как правильно искать ифнормацию по winapi, ведь я даже не знаю что мне надо. Используйте "другие библиотеки" это и было про copyfromscreen или есть еще варианты?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Есть же софт для стримминга, как я понимаю, та же IP-камера по сути.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Smorodov сказал:

Есть же софт для стримминга

Оуу! Серьезно?? Софт для стриминга? Какое открытие!! Мы тут посты набиваем или по сути будем общаться?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну мне не особо нужно посты накручивать :) 

Просто имелось ввиду отладить всю логику на видео из стриммера , а после, если все еще будет нужно, лезть в железки. 

Ну если горит прям "оооуу !", тогда гуглите "direct3d hook capture". 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

CopyFromScreen это пример метода который "встроен" в C#, в питоне есть аналоги. 

Можно вообще на заморачиватся, и взять vlc запустить там захват экрана и пустить все это в rtsp поток, который уже без проблем подхватит opencv. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×