GECKO 1.0
Human-computer interface based on hand gesture recognition
void HandDescriptor::contourExtraction ( const cv::Mat &  skinMask) [private]

Extract the hand contours from a binary image containing hand candidates.

After the contour extraction it filters out the smaller contours, that are likely to be noise, and carries a polygon approximation to reduce the number of points in the contour.

Parameters:
skinMaskBinary image containing the hand candidates, previously filtered by a HandDetector object.
{
    const int epsilon = 1; //-- Max error for polygon approximation

    //-- Extract skin contours:
    std::vector<std::vector<cv::Point> > raw_contours;
    cv::findContours(skinMask, raw_contours, CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cv::Point(0,0) );

    //-- Filter the contours by size:
    std::vector<std::vector<cv::Point> > filtered_hand_contours;
    filterContours( raw_contours, filtered_hand_contours);

    //-- Set a flag in case no hands have been found:
    _hand_found = (int) filtered_hand_contours.size() > 0 ;

    //-- If contour was found, make a aproximation of them:
    _hand_contour = std::vector<std::vector<cv::Point > >( filtered_hand_contours.size() );

    if ( _hand_found )
        for( int i = 0; i < filtered_hand_contours.size(); i++)
            cv::approxPolyDP( filtered_hand_contours[i], _hand_contour[i], epsilon, True );
}
 All Classes Functions Variables