Inspiration

In the lobby of the Cloudflare headquarters, an arrangement of more than 100 lava lamps fills one of the walls. A camera mounted towards this wall takes a picture of all the lamps at regular intervals and sends this digital image as a long string of numbers. Since the movement of over 100 lava lamps is almost impossible to predict, Cloudflare is able to offer extremely strong and sufficiently random encryption. We decided we wanted to replicate this form of encryption with something more local: the Birch Aquarium.

What We Learned

We learned how to integrate real-time video processing with a GUI, using OpenCV and PyQt. We tackled challenges like stream stability, GUI responsiveness, and cross-platform quirks. Along the way, we deepened our understanding of computer vision, multiprocessing, and how to build fast, functional prototypes under pressure.

How It Was Built

In order to build the basic framework for each layer of encryption, we utilized generative AI in order to get a head start with code. Each team member was tasked with a different layer. We then fine tuned this generated code in order to best fit our needs. Finally, the most challenging part, we had to link together all our different layers in one file and implement it in a simple GUI that ran with the live stream.

Challenges Faced

The original algorithm to detect fish was based entirely on movement on the screen. In other words, any changes in pixels would be considered a fish to the algorithm. This posed an issue as the tank we were streaming had lots of kelp which was prone to swaying around in the water. In order to combat this, we cut off two separate columns entirely from the stream and also lowered the threshold to be considered fish since almost all movement on screen was actually fish.

Built With

Share this project:

Updates