I want to detect moving objects in a surveillance video without using machine learning tools (like neural networks). Is there a simple way in the OpenCV library? What is an efficient solution for this purpose?


1 Answer 1


After a quick scan, it would seem that, in the history of object detection, machine learning has always been at the forefront. Before then, it would just be a heuristic approach.

For a quick answer, here: https://towardsdatascience.com/real-time-object-detection-without-machine-learning-5139b399ee7d

That goes over object detection without using machine learning in OpenCV

That being said, there are some segments of computer vision that are not strictly machine learning. For example, a commonly used algorithm Selective Search for region proposal doesn't use machine learning, and the TF Algorithm for background generation doesn't either.

But when it comes to object detection, the gap between machine learning and all other methods is so sheer that ML is the only method really considered today.

  • $\begingroup$ Thank you very much for your explanation. But I want to detect only moving objects in a series of frames. In a brute force algorithm, I think that we can calculate optical flows and then using the gradient of optical flow that we call motion boundary histograms(MBH). Each object that has value in MBH is a moving object. I search for such solutions in opencv. And I need to know that, are backgroundSubtractor functions in opencv doing this work for me? Or they also subtract fixed objects? $\endgroup$
    – Ali Abdari
    Dec 2, 2019 at 21:00

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .