teo@lockwell:~/p/plate-tracker$ cat README.md
main 03/052025Prototype
PlateTracker.
A camera that reads Croatian licence plates from live video, and only logs a plate once it's sure.
Overview
PlateTracker watches live video and reads the licence plates of the cars that pass. It’s built for Croatian plates. Every car is followed from the moment it appears, its plate is read several times, and the plate only goes into the log once the readings agree.
The problem
Reading a plate from a single video frame is unreliable. Plates are small, blurred and seen at an angle, and one bad frame turns ZG 1234-AB into ZG 1Z34-A8. A system that writes down every guess fills its log with near-duplicates and mistakes. The hard part isn’t seeing a plate: it’s knowing when a reading can be trusted, fast enough to keep up with the video.
What it does
Finds the plate
A model I trained on plate images spots plates in every frame, and skips the ones too small to read properly.
Follows each car
Every car gets its own track, so readings from different moments are grouped by vehicle instead of treated as strangers.
Reads it more than once
The plate is read again and again as the car moves. Distant plates are enlarged first, so there’s enough detail to work with.
Waits for agreement
A plate is confirmed only when the readings agree, or when a single reading is very confident. Readings that differ by one character count as the same plate. Each confirmed plate is logged once, with the time it was seen.
What I learned
Most of the accuracy came from what happens around the model: cropping, enlarging and voting. Following each car over time turned a frame-by-frame guessing game into something the system can reason about.
Where it stands
It’s a working prototype, tuned against real footage. The code is private.
Curious how it works under the hood? The technical write-up is on my dev portfolio.