An example multi-threaded vehicle tracker
This snap uses a MobileNet SSD network
to detect vehicles in a video stream, and then tracks them using the
CSRT tracker algorithm implemented on OpenCV. The distance from the
camera to the vehicles is then estimated by a simple formula using the
bounding box for the vehicle and the camera's focal distance. The later
is hard-coded in the code, so do not expect anything accurate: it is
more of an example application.
The program is able to track multiple vehicles while still running the
neural network for detections on the stream. Extensive multi-threading
is used to accomplish this while at the same time trying to be as
real-time as possible. This means that the trackers are fed with the
latest available frames and some times older frames are not processed.
Sources can be found at
https://github.com/alfonsosanchezbeato/car-distance-finder