Поиск подсказки на изображении под разные разрешения

В общем, стоит задача искать всплывающие подсказки в игре(пример подсказки, пример скриншота). Реализовал через templateMatching, работает хорошо, но когда дело доходит до других разрешений этот вариант уже не такой хороший. Пробовал ORB но работает не очень(возможно я неправильно настроил), ещё пробовал простой поиск по контурам, но он цепляет слишком много лишнего текста на изображении, т.к на скриншоте присутствует HUD игры. Думал использовать TesseractOCR, да только на низких разрешениях он тоже ломается, и работает довольно медленно

Пока самый лучший метод что я нашёл это изменять размер шаблонов под новое разрешение, но это работает только для одного соотношения сторон то есть 16:9, в котором я вырезал само уведомление. Может стоит как-то адаптировать под новые соотношения сторон? Или есть метод получше?

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

С++

//Изменение размера под новое разрешение
double scaleWidth = 1280 / 1920.0;
double scaleHeight = 720.0 / 1080.0;
int newWidth = round(templateForResize.cols * scaleWidth);
int newHeight = round(templateForResize.rows * scaleHeight);

cv::Mat resizedTemplate;
cv::resize(templateForResize, resizedTemplate, cv::Size(newWidth, newHeight), 0, 0, INTER_AREA);

//Поиск шаблона
bool FindObject(Mat& templateForFind, Mat& screenshot, Point& maxLoc, Mat& result, bool debug, double confid) {
    matchTemplate(screenshot, templateForFind, result, TM_CCOEFF_NORMED);
    double minVal, maxVal;
    minMaxLoc(result, &minVal, &maxVal, NULL, &maxLoc);

    if (debug) {
        std::cout << maxVal << std::endl;
    }

    if (maxVal >= confid) {
        return true;
    }
    else {
        return false;
    }
} 
    

Ответы (0 шт):