2011-12-15 5 views
2

Привет я использую this Ответ и напишите мою собственную программу, но у меня есть конкретная проблема. Если объект отсутствует, matchTemplate не дает ошибку, и я не знаю какого-либо метода, чтобы проверить, найдет ли matchTemplate объект или нет, может кто-нибудь дать мне совет или сказать мне имя функции, которое его проверяет.matchTemplate найти подходящий матч

ответ

8

matchTemplate() возвращает матрицу, значения которой указывают на вероятность того, что ваш объект будет центрирован в этом пикселе. Если вы знаете объект (и только один объект), все, что вам нужно сделать, это найти местоположение максимального значения.

Если вы не знаете, вы должны найти максимальное значение, и если оно превысило определенный порог, ваш объект должен быть там.

Теперь выбор этого порога сложный - вам решать, чтобы найти хороший порог специально для вашего приложения. И, конечно, у вас будут некоторые ложные срабатывания (когда нет объекта, но максимальный размер больше порога) и некоторые ложные негативы (ваш объект не создает достаточно большого пика)

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

+0

Если возможно, можете ли вы сказать, какую функцию или класс я должен использовать для проверки? – haykart

+0

minMaxLoc(), в указанной вами ссылке, возвращает только максимальное местоположение. Заполните нужное место двойным ref, а не NULL, и вы получите максимальное значение на изображении. (проверьте документ OpenCV для minMaxLoc()) – Sam

Смежные вопросы