Skip to content

jamalabo1/gitlab.entrance_monitor

Repository files navigation

Entrance monitor v2

The application monitors if a car is blocking the entrance and/or illegally parked there. the application processes CCTV camera streams. using deep learning it filters out cars from other detected objects, then runs them through a series of computational algorithms to determine if the car is blocking the entrance. if the audio controller is running on a remote machine the alert is controlled using VoIP, the server transmits the alert sound (configurable), after determining the entrance is blocked in a 5 seconds interval, taking into account moving objects. after receiving the audio, the client, which uses Bluetooth in order to send the audio, transmits it to a portable speaker

Project structure

.
├── apps 
│   ├── project_runner          # project runner executable 
├── src                         # Source files (libs, standalone)
│   ├── stream_obtainer         # stream obtainer.
│   ├── object_detector         # detects objects in a frame.
│   ├── blocking_computation    # computes the blockage of an object to the entrance.
│   ├── results_aggregator      # aggregates the blockage results into a decision.
│   ├── audio_controller        # controls audio output based on a decision.
│   ├── core                    # core components of the application (amqp/task_service/consumer,publish...).
│   ├── utils                   # utils project.
│   └── models                  # view models shared between the services.

stream_obtainer

obtains stream of set of source of frames (cctv camera,recorded video, etc...), compress the video into jpeg, publishes them into exchange frames.

object_detector

Receive frames from queue frames, detects objects in the frame and publishes them into exchange detections.

blocking_computation

Receive detections from queue detections, computes blocking percentage of the entrance, outputs a result of blocking( 1)/non-blocking(0) into exchange results.

results_aggregator

Receive results from queue results, compute a mean of the results of decided interval, then outputs a decision blocked(1) /not-blocked(0) to exchange decisions.

audio_controller

Receive decisions from queue decisions, controls audio output based on decision, (stops audio if the entrance is no longer blocked, starts the audio otherwise).

project_runner (apps)

project runner which runs all the services defined inside it. every service has its own injector.

*_standalone

standalone executable, is a service runner seperated from the apps project_runner, used for running on different machine or multiple instances of the same service.

note

messages are packed using msgpack (cppack) to ensure smaller message size.

Releases

No releases published

Packages

No packages published