Graffiti comes in many forms, a quick tag, a stencil, a sticker, etc. But what about light? How cool would it be to be able to throw up a tag on any surface, just by shooting a laser at it.
What it does
Our all-in-one system projects your canvas onto any wall of your choice, and by simply shining a laser pointer, you can draw all over it.
How we built it
With a combination of a camera, a projector, and a small computer, we can process an image looking for the specific color of the laser you are using. Once the laser is detected, the projector will draw on the canvas where your laser is shining. Specifically, we used Python OpenCV for image detection and PyGame for the drawing output. We mask the camera feed looking for a strong red channel, then run blob detection and fit a circle to the masked image. After this, we take the centroid of the circle and pass those coordinates into PyGame to draw on the projected surface.
Challenges we ran into
Originally our plan was to load a Raspberry Pi with OpenCV, our image processing library of choice, but as it turns out, simply compiling the library on the Pi takes an entire day. For that reason, our demos are actually carried out using a laptop with a built-in webcam. You also have to make sure to output a different color than the one you are detecting or else you will get into a feedback look of only detecting your drawing.
Accomplishments that we're proud of
We are pretty proud of being able to accomplish this together. There were a couple of things working against us: we have never met before and our Pi didn't work! That being said, we love our demo, and Matt's cats loved it too!
What we learned
We learned how critical it is to have clean color channels when trying to draw and detect at the same time. Supercritical was learning how to think on our feet and adapt when hardware failed.
What's next for Projector Graffiti
We'd love to integrate this with our Raspberry Pi once the libraries finish compiling, probably not until Sunday night though!