Inspiration

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!

Built With

Share this project:

Updates