Hi I am new to OpenCV and I am trying to implement human body tracking using a camera placed on a fixed position. I did a bit of a research and I came across Histogram of Oriented Gradients method but based on my understanding what it does is detection instead of tracking. Therefore I was wondering what is the simplest way to implement human detection and tracking on OpenCV?
P/S: I found this video and it is precisely what I wanted to achieve.
you can also try using a HAAR cascade for human body detection. just load the cascade using CascadeClassifier::CascadeClassifier()
and then use CascadeClassifier::detectMultiScale()
to obtain the regions within the given image where the object (body) was detected. adjust the parameters given to detectMultiScale()
to speed up and increase accuracy of detection.
you can find a bunch of cascades here including one for body detection.
have a look at these SO posts:
You can use HOG detector or latent svm detector with the "person" model to get the bounding box of the person and then track the person.
Tracking the centroid of the person can be done through the following: Measure the new centroid location. Measure it's velocity. Predict the next frame centroid's location using the current frame location and velocity. Then check if the new measurement of the centroid is close to the prediction. If it is then it's the same person as in the previous frame, if not then it's a new person that entered the frame.
Perhaps you should track the bounding box instead of the centroid. You the frame rate is high enough, perhaps you could just plot the bounding box and forget about tracking.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With