Я новичок в области компьютерного зрения, и у меня возникла проблема с поиском значка рыбы на изображении. В частности, мне нужно найти значок рыбы из игры и получить его координаты. Размер значка меняется в зависимости от его положения в воде, а также от его цвета при вытаскивании рыбы. Кроме того, эффекты внутри игры часто затрудняют процесс поиска значка.
Основная проблема заключается в том, что значок часто меняет свой масштаб. В результате методы, которые я пытался использовать для поиска, терялись или лишь изредка давали нормальный результат.
Для начала я пробовал использовать сопоставление шаблонов, но это не помогло. Не будет хорошо, если значок будет другого размера. Еще я пробовал сделать массив из нескольких размеров, но это работало очень нестабильно и сильно тормозило алгоритм.
Я новичок в области компьютерного зрения, и у меня возникла проблема с поиском значка рыбы на изображении. В частности, мне нужно найти значок рыбы из игры и получить его координаты. Размер значка меняется в зависимости от его положения в воде, а также от его цвета при вытаскивании рыбы. Кроме того, эффекты внутри игры часто затрудняют процесс поиска значка. Основная проблема заключается в том, что значок часто меняет свой масштаб. В результате методы, которые я пытался использовать для поиска, терялись или лишь изредка давали нормальный результат. Для начала я пробовал использовать сопоставление шаблонов, но это не помогло. Не будет хорошо, если значок будет другого размера. Еще я пробовал сделать массив из нескольких размеров, но это работало очень нестабильно и сильно тормозило алгоритм. [code]std::vector fishIcon; const std::vector SCALES = { 0.4, 0.5, 0.6, 0.8, 1.0, 1.2, 1.4 };
//Going through all the scales until you find the right one for (Mat ic : fishIcon) { if (FindObject(ic, screenshotGray, max_loc, result, true, 0.8)) { fishIconPosition = Point(max_loc.x, max_loc.y); found = true; break; } }
//Code for creating multiple masterstabs for (double scale : SCALES) { Mat resIcon; resize(sourceIcon, resIcon, Size(0, 0), scale, scale);
fishIcon.push_back(resIcon); }
//A method for searching for an icon in an image bool botActions::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);