Connect
Back to selected work
Case 20 · Parkr · parking management · Real-time CV
// Case 20 · 2025 · Computer Vision

Parkrevery bay, accounted for.

A real-time CV system that reads parking-lot occupancy from the cameras already on the poles — no ground sensors, no per-bay hardware. It detects each vehicle the moment it parks, tracks every bay's state live, and flags the cars that have overstayed.

EngagementCV build
StackYOLO11 · ByteTrack
RuntimeOn the feed
StatusLive
parkr.internal/live
Parkr — live parking bay occupancy feed
Chapter 01 · The Brief

Knowing the lot meant
circling the lot.

Drivers circled for a spot while attendants guessed at occupancy from a clipboard, and no one could say which car had overstayed the two-hour zone. Sensor-based systems existed, but they meant burying a loop detector or magnetometer under every bay — a dig-up nobody wanted to fund.

The brief: read occupancy from the cameras already on the light poles. Detect when a vehicle parks, track each bay's state, time how long it's held — and surface free spots, counts, and overstays on one live screen, processed straight on the feed.

Brief at a glance
Domain
Parking ops · pole cameras
Detect
Vehicles → bay zones
Constraint
No ground sensors · no dig-up
Engagement
CV build · on-feed
Runtime
Python · real-time
REC · DETECT · YOLO11ByteTrack · 16 bays
A1 · 00:42
A2 · FREE
A3 · 01:18
A4 · 00:09
A5 · 02:31
A6 · 00:55
A7 · FREE
A8 · 01:47
B1 · FREE
B2 · 00:21
B3 · 01:02
B4 · FREE
B5 · 00:38
B6 · 01:30
B7 · 00:14
B8 · FREE
// Live state
16
Bays
10
Occupied
6
Free
1
Overstay
// Zone A · 8
A100:42
A2
A301:18
A400:09
A502:31
A600:55
A7
A801:47
REC · BAYS · ROI MAPByteTrack · 16 bays
A1 · 00:42
A2 · FREE
A3 · 01:18
A4 · 00:09
A5 · 02:31
A6 · 00:55
A7 · FREE
A8 · 01:47
B1 · FREE
B2 · 00:21
B3 · 01:02
B4 · FREE
B5 · 00:38
B6 · 01:30
B7 · 00:14
B8 · FREE
// Live state
16
Bays
10
Occupied
6
Free
1
Overstay
// Zone A · 8
A100:42
A2
A301:18
A400:09
A502:31
A600:55
A7
A801:47
REC · LIVE · DASHBOARDByteTrack · 16 bays
A1 · 00:42
A2 · FREE
A3 · 01:18
A4 · 00:09
A5 · 02:31
A6 · 00:55
A7 · FREE
A8 · 01:47
B1 · FREE
B2 · 00:21
B3 · 01:02
B4 · FREE
B5 · 00:38
B6 · 01:30
B7 · 00:14
B8 · FREE
// Live state
16
Bays
10
Occupied
6
Free
1
Overstay
// Zone A · 8
A100:42
A2
A301:18
A400:09
A502:31
A600:55
A7
A801:47
Feature · 01

Detect & track
every vehicle.

YOLO11 detects every vehicle on the feed with per-detection confidence, and ByteTrack holds a stable ID on each one across frames — so a car edging into a bay isn't double-counted as it settles.

DetectionYOLO11 · confidence
TrackingByteTrack · stable IDs
InputPole-mounted cameras
Feature · 02

Map vehicles
to bays.

Each bay is drawn once as a polygon ROI mapped to the camera's perspective. A detection settled inside a zone marks that bay occupied; a per-bay state machine runs Free → Occupied → Overstay against the lot's time limit.

ZonesPolygon ROI · per bay
MappingDetection → bay
LogicFree → Occupied → Overstay
Feature · 03

One screen,
the whole lot.

A live panel shows all sixteen bays, their state, free-spot count, and dwell time per vehicle — counting from the second it parked. Bays past the time limit raise an overstay alert, rendered straight onto the feed with OpenCV.

DwellPer-bay timer
Dashboard16 bays · live
RenderOpenCV · on-feed overlays
We used to send someone out to walk the lot. Now one screen tells me exactly how many bays are free, where they are, and which car's overstayed its limit — live.
Facility Manager · Parking ops · Parkr
Chapter 04 · By the numbers
16
Coverage
Bays monitored,
one camera.

Every bay mapped as a polygon zone on a single pole-mounted feed — occupancy, dwell time, and overstays, all read from one frame.

0
Hardware
Sensors buried
under the asphalt.

No loop detectors, no per-bay magnetometers, no trenching. The system runs on the cameras the lot already had on its poles.

<1s
Latency
From a bay opening
to the screen.

Detection, tracking, zone logic, and dashboard rendering all run at frame rate — a spot freeing up shows almost the instant it happens.

Chapter 05 · Inside the feed

One feed,
three layers.

Live bay status, detection overlay, and zone map — everything the lot operator needs in one screen.

// 01 · Live
Parkr — Live bay occupancy dashboard

16 bays, dwell time, and overstay alerts in one dashboard.

// 02 · Detect
Parkr — YOLO11 vehicle detection overlay

YOLO11 vehicle bounding boxes stabilised by ByteTrack.

// 03 · Bays
Parkr — Polygon bay zone map

Bay polygons mapped to camera perspective — green free, red taken.

// 04 · Alerts
Parkr — Overstay alert and notification

Configurable time limits with instant operator notifications.

// Analytics
Parkr — Occupancy analytics and trends

Peak hours, turnover rates, and revenue opportunity gaps.

click to expand · drag to explore
Closing

The
credits.

  • Engagement
    CV build · single-camera
  • Detection
    YOLO11 · per-detection confidence
  • Tracking
    ByteTrack · via Ultralytics
  • Zones
    Polygon ROI · per-bay, perspective-mapped
  • Logic
    State machine · Free → Occupied → Overstay · dwell timing
  • Render
    OpenCV · live overlays + dashboard
  • Runtime
    Python · Ultralytics · custom business logic
  • Hardware
    None · standard camera feed
  • Status
    Live · 16 bays, real-time
  • Next case study

    Ansaanswers, grounded.

    A RAG support copilot that answers from your own docs — and cites them