Поиск по изображению / тексту / цвету / AI

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

Захват и анализ изображения

Эта группа триггеров предназначена для захвата изображения приложения или экрана с его последующим анализом.

Настройка

  • Mouse Cursor — для некоторых методов захвата эта опция позволяет включать или исключать курсор мыши из итогового изображения.
  • Settings => Max Capture FPS — это не настройка конкретного триггера, а общий параметр в настройках приложения, который жестко ограничивает максимальный FPS захвата.
  • Max FPS — задает желаемое количество кадров в секунду, которое EyeAuras будет пытаться захватывать и анализировать. Чем выше FPS, тем больше ресурсов потребляет триггер. Во многих случаях фактический FPS, отображаемый в программе, будет ниже целевого, потому что сама обработка кадров тоже занимает заметное время.
  • Min FPS — изменяет поведение триггера, если фактический FPS оказывается ниже ожидаемого. Это может происходить, когда системе не хватает ресурсов для достижения выбранного FPS и/или вычисления слишком сложные, как, например, при поиске текста. По сути, Min FPS добавляет время жизни для каждого отдельного кадра, и когда кадр считается устаревшим, триггер переключается в состояние Unknown, что вызывает OnExits у всех связанных аур, если триггер до этого был в состоянии Active.
    • Например, MaxFPS (он же Target FPS) = 30 (FrameTime is 1000/ 30 = 33ms), фактический FPS = 30 — всё в порядке, система справляется с нагрузкой.
    • MaxFPS = 30 (33ms), фактический FPS = 10 (100ms) — это уже плохо: системе не хватает ресурсов, чтобы держать нужный FPS. В таком случае стоит попробовать применить эффекты изображения или уменьшить размер/разрешение изображения, чтобы приблизиться к целевому FPS.
    • MinFPS = 15 (66ms), MaxFPS = 30 (33ms), фактический FPS = 30 — всё в порядке, работает точно так же, как и при MinFPS = 0, потому что реальный FPS значительно выше MinFPS.
    • MinFPS = 15 (66ms), MaxFPS = 30 (33ms), фактический FPS = 10 (100ms) — в этом случае триггер определит, что обработка/захват каждого отдельного кадра занимает слишком много времени, и периодически будет переходить в состояние Unknown. Точнее, после 66ms триггер переключится в Unknown на 34ms. Точное время будет отличаться от кадра к кадру. Например, если вычисления для конкретного кадра заняли 200ms (то есть это соответствует 5 FPS), триггер перейдет в Unknown через 66ms и останется в этом состоянии на 134ms, пока не получит результат вычислений, после чего вернется либо в состояние Active, либо Inactive.

Методы захвата

В целом два лучших метода — Windows Graphics и Shared Surface. Это самые быстрые варианты, и в большинстве случаев они работают лучше всего.

  • Windows Graphics — этот метод использует официальный Windows API и недоступен на версиях ОС ниже 10.0.19041.0
  • Shared Surface — GPU-ориентированный метод захвата, который работает напрямую с памятью видеокарты
  • Desktop Duplication — GPU-ориентированный метод захвата, который работает напрямую с памятью видеокарты
  • Print Window — использует довольно старый, но стабильный Windows API для захвата изображения. Этот метод не умеет захватывать некоторые окна, например браузеры, и считается Legacy
  • Copy Device Context — использует legacy Windows API для захвата контекста окна
  • Copy From Screen — использует legacy Windows API для копирования всего экрана и крайне неэффективен по ресурсам

Методы захвата по производительности

(1-е место — самый быстрый метод)

Windows Graphics ~= Shared Surface > Desktop Duplication > Print Window > Copy Device Context

Методы захвата по потреблению памяти

(1-е место — наименьшее потребление памяти)

Print Window > Windows Graphics > Shared Surface > Copy Device Context > Desktop Duplication > Copy From Screen