1 | initial version |
You don't want to find contours (at least not in the first stage), you want to detect an object. Therefore, you need to train a classifier for all object you want to recognize, with multiple images of them. See the Cascade classification page and Cascade Classification Training page to start. You could also try 2D features, like SIFT/SURF/ORB/... with Bag of Words approach and SVM, Random Tree, etc.
There is many papers on the web, an lot of answers on this forum for all these topics.