Nagdiel
Пользователи-
Количество публикаций
5 -
Зарегистрирован
-
Посещение
-
Days Won
1
Nagdiel last won the day on April 12 2015
Nagdiel had the most liked content!
Репутация
2 НовичекО Nagdiel
-
Звание
Новичок
-
Моя библиотека распознавания. Помогите с тестированием пожалуйста.
Nagdiel replied to Denissimo's topic in OpenCV
Тут может и не все гуру, однако Вы разве на этот форум обратились не для того, чтобы обсудить свои наработки с людьми которые кое-что в этом понимают? Дело в том, что правила транслитерации неоднозначны, поэтому когда объем кода большой могут быть проблемы с поиском нужной функции или переменной. Это во-первых. А во-вторых, любому иностранцу будет проще понять и запомнить что делает функция search, в отличие от функции с названием poisk.- 16 replies
-
- распознавание поиск объекта
- распознавание
- (и ещё %d)
-
Подойдет функция findContours c параметром CV_RETR_EXTERNAL. В этом случае функция возвращает список внешних контуров. Затем для каждого контура можно получить ограничивающий прямоугольник с помощью функции boundingRect. Про скорость работы при наличии 50 объектов точно не скажу, но по моим ощущениям эта штука работает довольно шустро.
-
Nagdiel начал следование за Получить координаты найденных объектов.
-
Ок. minVal соответствует значению функции сходства (нормированный квадрат разности) в точке наилучшего совмещения (minLoc). Для начала можно это значение сравнить с порогом: if (minVal < threshold) { cvRectangle(image, cvPoint(minloc.x, minloc.y), cvPoint(minloc.x+templ->width-1, minloc.y+templ->height-1), CV_RGB(255, 0, 0), 1, 8); } Попробуйте подобрать значение порога threshold. Если не выйдет, можно подумать над более сложным критерием. Например, можно анализировать выраженность пика. Т.е. смотреть отношение величины пика к среднему значению функции отклика в его окрестности.
-
Чтобы перейти на язык С++, неплохо бы Ваш код иметь перед глазами. Ну предположим, что используется функция из OpenCV: matchTemplate( img, templ, result, match_method ); На входе текущее изображение img, и отыскиваемый шаблон templ. Результат - изображение result, каждый пиксель которого представляет собой меру сходства изображения и шаблона в соответствующей позиции с точки зрения выбранного критерия match_method. Чтобы определить точку наилучшего соответствия необходимо в зависимости от выбранного критерия найти глобальный минимум или максимум: double minVal; double maxVal; Point minLoc; Point maxLoc; minMaxLoc( result, &minVal, &maxVal, &minLoc, &maxLoc, Mat() ); Теперь, чтобы понять, есть шаблон на изображении или нет, необходимо проанализировать величину отклика. Т.е. сравнить minVal или maxVal (в зависимости от используемого критерия) с порогом. Если условие не выполняется, то искомого объекта на изображении нет, и рамку для указания его местоположения отрисовывать не следует.
-
Как вариант, можно смотреть значение функции сходства, которая используется для поиска шаблона, и сравнивать его с порогом. Если значение меньше заданного порога, то объект не найден.