Привет, я новичок в OpenCV и пытаюсь реализовать отслеживание человеческого тела с помощью камеры, расположенной в фиксированном положении. Я провел небольшое исследование и наткнулся на метод «Гистограмма ориентированных градиентов», но, основываясь на моем понимании, он обнаруживает, а не отслеживает. Поэтому мне было интересно, как проще всего реализовать обнаружение и отслеживание человека в OpenCV?
P / S: я нашел это видео и это именно то, чего я хотел достичь.
Вы также можете попробовать использовать каскад HAAR для обнаружения человеческого тела. просто загрузите каскад, используя CascadeClassifier::CascadeClassifier()
а затем использовать CascadeClassifier::detectMultiScale()
получить области в пределах данного изображения, где был обнаружен объект (тело). настроить параметры, заданные для detectMultiScale()
ускорить и повысить точность обнаружения.
вы можете найти кучу каскадов Вот в том числе один для обнаружения тела.
взгляните на эти сообщения:
Вы можете использовать HOG-детектор или скрытый svm-детектор с моделью «персона», чтобы получить ограничивающую рамку человека и затем отслеживать человека.
Отслеживание центра тяжести человека может быть выполнено с помощью следующего:
Измерьте новое местоположение центроида. Измерьте его скорость. Прогнозировать местоположение центроида следующего кадра, используя текущее местоположение кадра и скорость. Затем проверьте, близко ли новое измерение центроида к прогнозу. Если это так, то это тот же человек, что и в предыдущем кадре, если нет, то это новый человек, который вошел в кадр.
Возможно, вам следует отслеживать ограничивающий прямоугольник вместо центроида. У вас достаточно высокая частота кадров, возможно, вы могли бы просто построить ограничивающую рамку и забыть о слежении.