OpenCV:как повысить точность обнаружения глаз с помощью каскада классификаторов Haar?

у меня есть приложение, использующее каскад Хаара для обнаружения глаз в захвате изображения с видеокамеры. Используемый метод:

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 документы мне не совсем понятны. Спасибо.

1 ответов


параметр scaleFactor используется для определения того, сколько разных размеров глаз будет искать функция. Обычно это значение равно 1.1 для лучшего обнаружения. Установка этого параметра на 1.2 или 1.3 позволит быстрее обнаруживать глаза, но не находить их так часто, что означает, что точность снижается.

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

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