Detecting Dirty Dishes with OpenCV

While I’m no slob, I’ve left my fair share of dirty dishes in the sink, much to the chagrin of my former roommates. But who hasn’t left a plate, spoon, or glass in the sink when you’re in a rush to get out of the house every now and then? What happens in a shared space like a hackerspace, where you could have as many as fifty people passing through the communal kitchen in a given day? All those cups start to pile up quickly, I’m sure. Not one to let things get out of hand, London Hackspace member Tom created a solution to combat the problem. True to hackerspace form, he combined different open source technologies to alert the members in the space when a dish has been left in the sink for more than a few minutes.

To create this so-called Great OpenCV Washing-Up Detector, Tom mounted a PS3 Eye camera pointing down at the sink, connected to a BeagleBone running Debian. He used the HoughCircles function in the OpenCV library to detect the circular shape of glasses and plates from each frame. When a dish has been in the sink too long, it sends a signal over the network to an Arduino. The Arduino controls a set of relays to turn on the lights inside a traffic light, signalling to everyone in the space that someone needs to suck it up and put on the dishwashing gloves already. The system even utilizes London Hackspace’s IRC bot to alert chatters in their channel.

For those of you who want to implement a similar plan in your shared space, Tom uploaded his code to Github. In the meantime, he isn’t letting up in his crusade to give the lazy members a free pass. He plans on wiring red LED strips above the sink as an alert and even a camera to catch mug shots of the offenders. And what about cutlery and non circular dishes? Tom hopes a Kinect version of this system will help him detect those as well. So if you think you’ll be able can cheat the system by using square plates, you’ve got another think coming.