1.4.7458

середина сентября — поддержка более глубоко вложенных структур

Улучшение ImageSearch — добавлена опция "Include All Matches"

Добавлена новая опция "Include All Matches". Она предназначена для некоторых редких сценариев в скриптах.

По умолчанию ImageSearch находит лучшее возможное совпадение, а затем отслеживает его перемещение — это позволяет не сканировать всё изображение на каждом кадре. Новая опция отключает такие оптимизации, и изображение полностью пересканируется на каждом тике.

Плюс в том, что вы получаете доступ сразу к нескольким найденным кандидатам и их значению similarity. Минус — производительность резко падает.

Чтобы получить доступ ко всем найденным объектам, используйте TemplateMatches, который возвращается как часть результата ImageSearchTrigger.Refresh.

csharp
public interface IImageSearchDetectionResult : ICaptureTriggerDetectionResult
{
...

    /// <summary>
    /// Contains an array of all successful template matches and their bounds/similarity
    /// Will contain more than 1 element only if Include All Matches is enabled in ImageSearchTrigger
    /// </summary>
    public ImmutableArray<TemplateMatchResult> TemplateMatches { get; init; }

...
}

Include all matches

Это крайне тяжёлая задача для CPU. На 1920x1080 при полном сканировании вы, скорее всего, получите максимум 2–3 FPS. Это огромная разница по сравнению с ML-поиском: на том же разрешении для той же задачи он может давать до 60 FPS. Поэтому если вам действительно нужно находить несколько экземпляров одного и того же объекта, настоятельно рекомендую посмотреть в сторону обучения Yolo-модели и использовать её вместо этого.

Исправления и улучшения

  • [BehaviorTrees] Немного оптимизирована работа BT с глубоко вложенными структурами, максимальная глубина увеличена с 64 до 1024 #EA-578 Nested tree v7444 by oddessax