Computer vision · Crowd safety · 2026
Stadium
Crowd and gate monitoring prototype
Estimates how many people are at each stadium gate from video, flags crowding early and recommends where to move staff.
- Role
- Solo developer
- Status
- Working prototype
- Evidence
- Public repository
- Year
- 2026
Evidence
What a reviewer can check today — and what is not claimed.
- Status
- A solo working prototype that runs on local video files or a webcam. It has not been calibrated for a real venue.
- Evidence
- Public repository on GitHub(opens in a new tab)
Vision loop, gate decision engine, Flask API and dashboard, with setup steps and limitations.
- Dashboard screenshot in the README(opens in a new tab)
Captured from the committed gate dashboard.
- Not claimed
- No venue deployment and no counting-accuracy figures are claimed.
- Stack
- Python
- Ultralytics YOLO
- OpenCV
- Flask
- NumPy
- JavaScript
Context
A solo project, built end to end by Abdulelah.
The problem
Crowding at an entrance becomes a safety problem before anyone has counted it. Gate staff see their own queue, not the whole picture, so the decision that matters — move staff, redirect arrivals — often comes late.
Constraints
- Use existing camera feeds instead of new sensors
- Output has to be something an operator can act on immediately
- Runs locally against video files or a webcam
Solution
YOLO detects people in each frame and assigns them to one of four gate zones. A decision engine sets each gate’s status — normal, busy, critical or overflow — logs alerts, estimates arrival time and recommends staff moves. A Flask API serves that state to a dashboard that polls every two seconds.
My responsibility
Solo developer
- Built the whole system as a solo project
- Implemented YOLO person detection and zone assignment
- Designed the decision engine for gate status, alerts and staff recommendations
- Built the Flask status API and the live dashboard
Architecture & workflow
- 01 · Input
Camera or video
- 02 · Processing
YOLO person detection
- 03 · Intelligence
Gate-zone status rules
- 04 · Output
Live dashboard & alerts
How it works
- Ultralytics YOLO detects people frame by frame
- Each detection’s centroid is mapped to one of four gate zones
- A decision engine assigns status, logs crowding and overflow alerts and estimates ETA
- Flask exposes the current state at /api/status
- An HTML dashboard polls the API every two seconds
Decisions
Vision over new hardware
Computer vision on ordinary camera feeds instead of new sensors — cheaper to trial, and it works with the cameras a venue already has.
Recommend an action, not just an alarm
The decision engine doesn’t only flag a busy gate; it suggests where to move staff, so the output is something an operator can act on.
Verified outcome
A working prototype built solo: detection, zone assignment, four status states, an alert log, staff recommendations, a status API and a live dashboard. It has not been calibrated against a real venue, and no counting-accuracy figure is claimed.
Limitations
- Gate zones are hard-coded and need calibration for every camera angle.
- No automated tests cover counting, alert thresholds or the API.
- Not deployment-ready: camera privacy, latency and operations still need review.
- Local model and video files make the repository large.
What would come next
- Make gate zones configurable per camera
- Measure counting accuracy on labelled footage
- Add tests for thresholds and the status API
The idea, sketched
Related projects
- Sustainability · Urban planning · 2026AlthilHelps planners see where shade canopies would do the most for thermal comfort, using sun position, heat exposure and street imagery.Hackathon prototypeRead the case study
- Legal tech · Employment · 2024QanouniAn AI advisor concept that explains labour rights and procedures to private-sector employees in plain language.ConceptRead the case study
Working on something similar?
Tell me about the problem, or pick the CV that fits the role — either way you’ll get a direct reply.