всем, я обучил свой собственный классификатор в Opencv, и когда я запускаю его, я получаю плохие результаты. Моя цель — использовать функции Хаара в качестве ориентира, поэтому я хотел бы просматривать положительные результаты не после выполнения всего каскадного классификатора, а на каждом этапе, после каждой функции. Можно ли тогда сказать детектору остановиться на этой функции или мне нужно вручную обрезать файл xml, содержащий пороговые значения функций? Спасибо
Как просмотреть положительные результаты при классификации каскада Хаара
Ответы (1)
Это возможно. Просто проверьте, как работает CascadeClassifier::detectMultiScale
. В этой функции вы можете проверить this->data.stages.size()
, она покажет вам, сколько ступеней в каскаде.
В частности detectMultiScale
звонит detectSingleScale
, потом CascadeClassifierInvoker
звонит operator()
, и мы видим там int result = classifier->runAt(evaluator, Point(x, y), gypWeight);
строку.
Таким образом, если result
больше нуля, это означает, что классификация прошла успешно и прошла все этапы. В противном случае (если не ошибаюсь) результат будет равен -[number of stage]
классификатору не удалось. Таким образом, вы можете видеть, что точный классификатор стадии не прошел.
Также, если вы используете каскады в старом стиле, обратите внимание, что detectMultiScale
вызывает cvHaarDetectObjectsForROC
, а не detectSingleScale
, но по сути делает то же самое.
Удачи.
И да, это означает, что вы собираетесь изменять исходники.