Jump to content
Compvision.ru
Sign in to follow this  
Rambo

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

Recommended Posts

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

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

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

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

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

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

План:

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

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

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

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

 

 

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

1.jpg

Share this post


Link to post
Share on other sites

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

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

  • Thanks 1

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
2 часа назад, Smorodov сказал:

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

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

Share this post


Link to post
Share on other sites

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

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

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

 

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×