Inspiration

Our group wanted to expand our knowledge on building iOS applications as well as build a program that utilized Xcode's ARKit. From there, we stumbled upon the idea to create an application that could view playing cards and determine which specific ones they were, as an idea for an essential building block to a future application where a computer can play cards with others through video recognition software rather than every player needing to play through the app.

What it does

Our app scans playing cards using the iPhone's camera and determines which card is being viewed. From there, the card is displayed on the screen, as well as named aloud on the app.

How we built it

Kevin definitely took the lead on the project, not only because he had the most experience building iOS applications but also because he was the only one with a mac. We utilized a variety of the new ARKit's functions within Xcode in order to create a database of recognized images, and then once our camera found one of these images it would process it depending on the name of the image, and do the two actions listed above (print the name of the card to the screen and read it aloud).

Challenges we ran into

We ran into three main challenges during this project (outside of coming up with an idea), two technical and one non-technical. The first of the technical problems was getting the sound feature to work whenever the phone was set to silent, with its ringer turned off. The second technical issue was getting the audio readout of the card name to not repeat itself. We were able to combat the first of these through a lot of the help/manual pages within Xcode, whereas the second issue we were able to combat through changing our process of initiating a voice call out. Rather than directly having the voice callout upon picture recognition, we moved it within its own function that was called upon video recognition, and added some code so that it only ran whenever the recognized image had changed, rather than every time the camera picked up the image. The final issue, the non-technical one, was arguably the biggest issue that we faced. In order to get our recognition software to work, we needed to have images of the cards we were trying to detect, and there were very few good images online. We assumed that we would be able to fix this issue by scanning images of the cards ourselves, which we did, however due to the scanner we used not being high enough quality, the resolution of our images was not high enough for the program to work well. With that, our program only works with a select group of cards, as they were the only ones with good enough images online.

Accomplishments that we're proud of

Our software works very well with the playing cards that we have images of, which is something that our group is very proud of. Additionally, our group was satisfied with the fact that we added a text-to-speech aspect to our application. Overall, the entire project was cool in our eyes, and we were happy with the amount of things that we learned throughout the process, both specific to developing applications through Xcode and swift, as well as general learning from working together as a team and just talking to each other about a variety of computer science and computer engineering topics.

What we learned

As above-mentioned, each member of our group was able to expand their knowledge on developing iOS applications through the use of swift and Xcode. As with most group projects, we additionally felt that we gained some knowledge just by working together as a group, bouncing ideas off of each other and hearing different approaches to the same problem. Finally, it cannot go understated that the remainder of the group learned a lot from Kevin, who gave a lot of knowledge on a variety of topics involving app development that were not even addressed during the creation of our program.

What's next for Playing Card Reader

The goal with our Playing Card Reader will be to eventually turn it into a program that can play cards with humans. While this program could be implemented into a wide variety of card-playing games, our group specifically feels that it would work well with a turn-based card game, where players take turns throwing out a card in order to determine a winner (Euchre, Hearts, Spades, etc.). This application would "look" at its own cards briefly to memorize them, do some calculations depending on the game, and then announce which card it would like to play upon its turn (most likely an index), at which point the other users playing the game would only need to flip over a card to play for the application. This would be an exciting concept, as at least for me and my roommates personally, we always want to play card games together that require x amount of players (i.e. Euchre requires four players), but do not have enough. Being able to use a video recognition software to have a computer play with us would not only be cool seeing the technology work, but would be something that we could use often

Built With

Share this project:

Updates