DetectMultiScale никогда не возвращается при вызове перегрузки с помощью rejectLevels и levelWeights

Я пытаюсь изменить свой код на основе OpenCV, чтобы получить конфиденциальность вместе с каждым обнаруженным объектом из каскадного классификатора. Когда я звоню перегрузка из CascadeClassifier«s detectMultiScale метод, который принимает параметры для rejectLevels а также levelWeights (и передать правду для outputRejectLevels), вызов никогда не завершается. Внутренне, призыв к detectMultiScaleNoGrouping заканчивается быстро, но возвращает миллионы объектов. Когда я не передаю ни один из дополнительных параметров и установить outputRejectLevels в false тот же самый вызов возвращает 60 объектов, а остальная часть функции работает нормально.

Разве я не должен вызывать эту перегрузку? Или есть другая причина, по которой он возвращает столько значений, что функция никогда не завершается? Как я могу сделать это правильно?

Примечание: я вижу Другой вопрос кажется, что она ссылается на ту же проблему, но она не содержит много информации о самой проблеме и не получила никаких ответов.

0

Решение

Оказывается, это было исправлено в основной ветке OpenCV, но еще не выпущено (по состоянию на 18 апреля 2016 г.). Я подтвердил, что ручное применение исправления и восстановление исправляет проблему.

Соответствующее обсуждение Вот и PR, который должен быть включен для решения проблемы этот. Это изменение в одну строку, поэтому его легко реализовать вручную, пока они не выпустят официальную сборку с включенным изменением.

0

Другие решения

Других решений пока нет …