See every vehicle. Measure every speed.
A single roadside camera becomes an automated speed enforcement officer. The surface detects every vehicle in frame, measures its true ground speed through a bird's-eye-view projection, and the moment a car exceeds the limit it captures the clip, reads the plate, and identifies the registered owner.
Vehicle detection
Every frame is scanned for cars, trucks, buses and motorcycles, each locked in a tracked bounding box.
Bird's-eye speed
A per-carriageway homography maps camera pixels to metres, so motion converts to true ground speed in km/h.
Colour-coded bands
Each box is drawn green, yellow or red against the limit, with a live km/h label above the vehicle.
Capture & identify
Over-limit vehicles trigger a clip, a plate read, an owner lookup, and a structured violation report.
Bird's-eye-view calibration
Accuracy comes entirely from calibration. Each carriageway is pinned by four road-edge points, mapped onto a rectified top-down view where one metre is a fixed number of pixels. A vehicle's ground-contact point is projected into that view, and distance over time gives speed.
- Per-carriageway homography โ left and right roadways calibrated independently
- Scaled top-down grid โ pixels resolve to real metres on the road
- Smoothed tracking โ speed averaged over several frames to kill jitter
- Limit-aware bands โ green < 60, yellow 60โ100, red > 100 km/h
Calibration source
# road geometry โ bird's-eye view LANE_WIDTH_M = 3.75 BEV_SCALE = 18 # px / m VISIBLE_LEN_M = 70 # left carriageway edge points (px) SRC_ROAD_L = [ [155, 415], # far-left [600, 395], # far-right [845, 1079], # near-right [ 0, 1079], # near-left ] speed_kmh = (dist_m / dt_s) * 3.6
Every over-limit pass is captured as evidence
A confirmed violation writes a video clip with pre-event padding, a cropped vehicle image, and a structured report โ speed, amount over the limit, plate, and owner โ ready for review.
{
"speed_kmh": 118.4,
"speed_limit_kmh": 100,
"over_limit_kmh": 18.4,
"license_plate": "HK1234",
"owner": { "name": "Chan Tai Man", "phone": "+852 5551 0001" },
"clip": "violation_track7.mp4"
}