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