Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

OpenCV Human Body Tracking

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.

like image 279
user2900552 Avatar asked Oct 20 '13 16:10

user2900552


2 Answers

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:

  • OpenCV 2.4 CascadeClassified detectMultiScale arguments
  • OpenCV: How to improve accuracy of eyes detection using Haar Classifier Cascade?
like image 53
samkhan13 Avatar answered Oct 01 '22 02:10

samkhan13


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.

like image 44
GilLevi Avatar answered Oct 01 '22 01:10

GilLevi