Inspiration
The rules of physical distancing mean that shops, restaurants and public areas have to cap the number of people in a room at any one point in time. But it left us wondering how it is enforced. Currently, some businesses have employees manually stand at the entrance and count and others don't even keep track at all.
That is why we wanted to create a service that allows businesses to easily track how many people enter and exit their store so that they do not exceed maximum capacity.
What it does
Max Capper displays how many people are in a store at the current time as well as how many people are allowed in for maximum capacity.
How we built it
Using a live video feed, we used Opencv to detects bodies entering through a doorway, drawing a box around them. We created an algorithm to track the boxes, and measure the velocity. This way we could recognise when a person was moving, and which way they were moving. Relative to the location of the doorway, the velocity tells us if the person is entering or exiting the building. This information is then sent from the backend to the frontend using websockets. The frontend then updates the information for the user to see!
Challenges we ran into
- Limiting the scope of the application. Our plan for mvp changed many times. Our first iteration of the product plan was quite complex, and in retrospect I think would’ve taken at least 2 more weeks to create. Making our product and the implementation as lean as possible, and more of a proof of concept contributed to us being able to complete what we set out to do.
- Object association and tracking is really hard! We could get the OpenCV algorithm to recognise people and draw boxes around them quite easily. However actually getting it to recognise that the same person was moving across the screen was really hard. In the end we had to do a bunch of research, prototyping to come up with an algorithm that worked.
- Running web-sockets (with SocketIO) alongside OpenCV is really resource intensive! Our application slowed down a lot and had heaps of ping because the image processing + algorithm + sending web sockets requires a lot of processing power. We had to learn about multithreading in Python to tackle this challenge.
Accomplishments that we're proud of
- Our team was pretty busy - we only really had time to work on the project for around 2 hours each night during this week. Given that - I’m really happy with what we were able to accomplish!
- Getting the movement processing algorithm working ! This was really challenging and required a lot of iteration and trying out new ideas, as well as a bit of research.
- Getting something working up and running !
What we learned
- Machine learning, AI, object detection
- Web-Sockets
- Multithreading
- Project management
What's next for Max Capper
- We are going international !!

Log in or sign up for Devpost to join the conversation.