All projectsComputer vision system

AI Parking Analytics System

A computer-vision operations platform that turns calibrated parking footage into occupancy signals, live events, analytics APIs, and a dashboard.

Scope: Computer vision pipeline · API design · Product integration

The problem

What had to work beyond the model.

A detector alone does not make a useful parking product. It needs calibrated spaces, state interpretation, event delivery, storage, and a clear surface for operations teams.

Vision

Uses parking-slot polygons and object detection to reason about occupancy.

Realtime

Includes WebSocket-oriented delivery for current events and changing state.

Product

Pairs the vision pipeline with analytics APIs, storage, and a React dashboard.

System at a glance

How the pieces connect.

  1. 01Camera input

    Media or camera frames enter a vision path that can use YOLOv8-compatible detection with an OpenCV fallback.

  2. 02Space semantics

    Calibrated slot polygons convert vehicle detections into the state of specific parking spaces.

  3. 03State + events

    Hysteresis and debounce guard state transitions before auditable occupancy events are emitted.

  4. 04Operations surface

    FastAPI, WebSocket delivery, storage boundaries, and a dashboard turn detection into usable operational context.

Key engineering decisions

Choices that make the system usable.

  1. 01

    Made calibration a first-class part of the workflow because the product needs to understand individual spaces, not merely detect cars.

  2. 02

    Used a six-state vocabulary—free, occupied, unknown, blocked, reserved, and maintenance—so weak evidence does not silently become a false occupancy claim.

  3. 03

    Connected inference to APIs and live events only after state stabilization, so raw detections can become operational signals.

  4. 04

    Kept the platform boundary clear: vision, service layer, data storage, and dashboard each have a distinct job.

Verification path

How the work can be inspected.

  • The local PKLot setup defines 100 calibrated parking spaces for repeatable development and inspection.
  • The dashboard is designed to refresh current data every three seconds while WebSockets carry changing state.
  • The explicit unknown state preserves uncertainty when camera evidence is not strong enough to classify a space.
Current boundary

The live runtime state is currently local and in-memory. SQL migrations exist, while durable workers, RBAC, and object-store retention remain deployment work rather than claimed production features.

Technical stack
PythonFastAPIOpenCVYOLOv8-compatible detectionWebSocketsSQL storageReact
Want to discuss a similar system?

Let’s make the hard part usable.

Start a conversation