Inspiration
We all thought about what we could make that would benefit the daily lives of students at NTU and other universities. One of the first things that came to mind was that we all spend too much time trying to find seats in the library and it would be nice if we had a way to check where free seats are located.
What it does
Our web app takes advantage of the fact that there are cameras placed everywhere throughout the study spaces around campus. We want to use the camera footage to determine where the tables are and how many people there are at each table based on motion detection. Then, we can calculate how many free seats there are at each table and send this information to a website that students can check.
How we built it
In order to get a working prototype within the allotted time, we hardcoded the locations of the tables in a certain room. We assumed that tables are unlikely to move around much in the same room, so it is reasonable to use hardcoded values. Then, we built a motion detection system that takes the difference between two frames and finds all of the contours that are bigger than a certain area within the vicinity of each table. This allowed us to reasonably say whether or not there is at least one person at a certain table. The last step was to export the data from the program to a web server that could display which tables in a room are full in real time on a website.
Challenges we ran into
Our biggest challenge was figuring out how to detect the tables in the room. This was difficult because the OpenCV programs we found were only good for detecting circles, and not tori. Also, the tables in a single room have varying shapes and sizes due to their distance and angle from the camera, making it difficult to consistently detect all of the tables in the room. In the end, we were not able to figure out how to automatically detect tables, so we hardcoded it in for now.
Accomplishments that we're proud of
We're most proud of the motion detector that we built because it is successfully able to detect finger movements at a distance of 5m away. This allows to very accurately detect a person who is studying at a desk in the middle of a room and is not moving their body significantly, which may be the case if someone is reading or writing.
What we learned
Coming into the project, none of us had any experience coding in Python or creating a web server. With the help of various Internet tutorials and a lot of patient debugging, we now have a decent amount of experience with both of those things. But most of all, we learned that hard work and resilience combined with a cooperative and encouraging team can bring rewarding results.
What's next for Find a Seat
Right now, the table detection is hardcoded and we would like to find a way to detect the tables automatically so that our seat finder algorithm can be used in any room without the need for initial calibration. Ideally, we would also like to find a way to detect exactly how many people are at a table, rather than if a table has people around it, so that we can give an indication of seats left. We can achieve both of these goals by using a HAAR classifier to recognize a table, an empty chair, as well as a person in a chair. Since a set of 40 positive images and 600 negative images are required to successfully train a HAAR classifier, this was not a feasible goal to achieve during the hackathon.
Log in or sign up for Devpost to join the conversation.