Распознавание области экрана для определения местоположения поля на экране

Я пытаюсь найти способ заставить распознавание изображений Sikuli использовать в C #. Я не хочу использовать сам Sikuli, потому что его язык сценариев немного медленный, и потому что я действительно не хочу вводить мост Java в середине моего приложения .NET C #.

Итак, у меня есть растровое изображение который представляет область моего экрана (я назову эту область КНОПКОЙ1). Компоновка экрана могла немного измениться, или экран мог быть перемещен на рабочем столе, поэтому я не могу использовать прямое положение. Сначала мне нужно найти, где текущее положение КНОПКИ 1 находится в пределах экрана живого видео. (Я попытался опубликовать фотографии этого, но, думаю, не могу, потому что я новый пользователь ... Надеюсь, описание проясняет ... )

Я думаю, что Sikuli использует OpenCV под прикрытием. Поскольку это открытый исходный код, я думаю, что мог бы его перепроектировать и выяснить, как делать то, что они делают в OpenCV, реализовав вместо этого в Emgu.CV - но моя Java не очень сильна.

Я посмотрел для примеров, показывающих это, но все примеры либо чрезвычайно просты (например, как распознать знак остановки), либо очень сложны (например, как делать распознавание лиц) ... Похоже, что логика этого шага изменилась.

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

Итак, я думаю о том, чтобы сделать это вместо этого:

A) Преобразуйте растровые изображения в байтовые массивы и выполните поиск методом перебора. (Я знаю, как это сделать). А затем

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

Это совершенно безумие? Есть ли у кого-нибудь простой пример того, как для этого можно использовать Aforge.Net или Emgu.CV? (Или как дополнить шаг B выше ...?)

Спасибо!

7
задан MarkJoel60 22 February 2011 в 22:53
поделиться