У меня есть приложение, использующее каскад Хаара для обнаружения глаз при захвате изображения с видеокамеры. Используемый метод:
void CascadeClassifier::detectMultiScale(const Mat& image, vector<Rect>& objects, double scaleFactor=1.1, int minNeighbors=3, int flags=0, Size minSize=Size(), Size maxSize=Size())
Это работает довольно хорошо со значением по умолчанию scaleFactor
, minNeighbors
, а также flags
но глаза некоторых людей не могут быть обнаружены. Поэтому я хочу улучшить точность обнаружения глаз. Это похоже на «Обучение каскадных классификаторов», и создание собственного каскадного классификатора является хорошим решением, но прежде чем идти по этому пути
Можно ли улучшить точность обнаружения путем корректировки некоторых параметров в методе? Пожалуйста, объясните больше значения scaleFactor
, minNeighbors
, а также flags
потому что те из cascadeclassifier-detectmultiscale документы не совсем понятны для меня. Спасибо.
Параметр scaleFactor используется для определения количества глаз, которое будет искать функция. Обычно это значение составляет 1,1 для лучшего обнаружения. Установка этого параметра в 1,2 или 1,3 будет обнаруживать глаза быстрее, но не будет обнаруживать их так часто, что означает, что точность снижается.
minNeighbors используется для того, чтобы сообщить детектору, насколько он должен быть уверен при обнаружении глаза. Обычно это значение равно 3, но если вы хотите больше надежности, вы можете установить это выше. Более высокие значения означают меньшую точность, но большую надежность
Флаги используются для установки определенных предпочтений, таких как поиск самого большого объекта или пропуск областей. По умолчанию это значение = 0. Установка этого значения может ускорить обнаружение
Других решений пока нет …