'Process the image. Return a featureset with a single
PlayingCard feature or None'

def process(self, img):

    card = self._findCardEdges(img)
    if (card is None):
        warnings.warn('Could    not    find    a    card.')
        return None
    try:
        card = self._estimateColor(card)
        card = self._estimateSuit(card)
        (isFace, card) = self._isFaceCard(card)
        if isFace:
            card = self._estimateFaceCard(card)
        else:
            card = self._estimateRank(card)
        card = self._refineEstimates(card)
    except CardError as ce:
        card = ce.card
        if (card is not None):
            card = self._isNonStandardCard(card)
        warnings.warn(ce.msg)
    except:
        print 'Generic    Error.'
        return None
    return FeatureSet([card])
