2016-07-18 2 views
1

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

Поскольку OpenCV разрешает только видео и веб-камеру в качестве входных данных, существует ли способ открыть запущенное приложение в качестве источника для OpenCV?

Возможно, в разработке игр используются некоторые тестовые приложения, которые используют аналогичные методы для тестирования, но я не смог их найти.

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

Я попытался найти форумы, статьи или что-нибудь написанное об этом, но ничего не нашел. Любая помощь будет оценена по достоинству.

+0

hwindowDC = GetDC (hwnd); hwindowCompatibleDC = CreateCompatibleDC (hwindowDC); SetStretchBltMode (hwindowCompatibleDC, COLORONCOLOR); –

ответ

0

Я использовал OpenCV в течение года, и я не уверен, можете ли вы передать ему текущее приложение.

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

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

Если вы работаете под Windows, вам может понадобиться this discussion.

Надеются, что это будет как-то помочь вам.

+0

Да, это та часть, которую я уже выяснил. Проблема в том, что мне нужно хранить изображения в памяти, а не в файлах (что в конечном итоге уничтожит любой жесткий диск). Я предполагаю, что если я храню снимок экрана BMP в памяти (не имеет значения, если он назначен для переменной/ссылки Python или указателем C++), я могу получить к нему доступ с помощью функций OpenCV (независимо от того, какой язык я использую для вызова API) и выполнить те операции, которые мне нужны. Я ошибаюсь или это действительно так, как я себе это представляю? – Disane

0

Я пытаюсь использовать весь метод, используя рабочий стол в качестве источника в opencv несколько месяцев назад, как проект эксперимента и успех, но внутри окна есть след, так как от него зависит скорость или процессор. Он использует вашу собственную функцию для использования рабочего стола в качестве источника не из библиотек opencv. И оттуда я продолжил обычай и застрял в некоторой ошибке, которая имеет что-то из памяти, поскольку она использует много памяти. Я сделал сообщение в stackoverflow. Надеюсь, эта информация поможет.

Смежные вопросы