Ever have a group photo ruined by that one person who didn't smile on time? We have a solution for you!
What it does
Cassium, Latin for cheese, is an app that makes taking group photos much easier. The app waits until every person is in the frame and smiling before automatically taking the picture for you.
How we built it
We used Android's built in face-recognition library and combined it with Indico's facial and emotional recognition machine learning API to determine when the right number of people are in the photo and are smiling.
Challenges we ran into
We had a lot of difficulties with the Indico API. We never knew that the official Android version of the Indico API was deprecated and no longer functional, so we wasted some time trying to get Indico's Java API wrappers to work in our app. After that failed, we transitioned to directly making our own RESTful POST requests to communicate with their servers, which solved much of our problems. We also had problems with the spotty internet making us unsure if it was our code or the wifi that was causing our communication with Indico to fail.
Accomplishments that we're proud of
We effectively built a camera that has image recognizing capabilities and got it to work. We learned so much from this experience.
What we learned
We learned how to use RESTful web services to communicate with servers via HTTP. We also learned how to deal with the camera in Android. Although learning these things was tricky, it was ultimately very rewarding!
What's next for Cassium
Indico's facial and emotional recognition API is, unfortunately, not very accurate. We would like to transition to a more accurate way to determine if someone is smiling. We also want to be able to use the service offline. Repeatedly sending image data over the internet takes a long time, and it can use a lot of data if the photos are being taken outside and/or away from wifi. We also want to polish our Android app to make it more intuitive and aesthetically pleasing.