How can I detect moving objects in a video by OpenCV without using deep learning techniques?


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?

ali abdari

Posted 2019-11-29T18:19:47.383

Reputation: 71



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:

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.


Posted 2019-11-29T18:19:47.383

Reputation: 800

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? – ali abdari – 2019-12-02T21:00:14.493