GECKO 1.0
Human-computer interface based on hand gesture recognition
HandDescriptor::HandDescriptor ( )

Default constructor.

{
    //-- Initalize hand parameters
    //-----------------------------------------------------------------------
    _hand_angle=0;
    _hand_center = cv::Point(0,0);
    _hand_gesture = GECKO_GESTURE_NONE;
    _hand_num_fingers = -1;
    _hand_found = false;


    //-- Kalman filter setup for estimating hand angle:
    //-----------------------------------------------------------------------

    //-- Create filter:
    kalmanFilterAngle.init( 2, 1, 0);
    kalmanFilterAngle.transitionMatrix = *( cv::Mat_<float>(2, 2) << 1, 1,
                                                                     0, 1);
    //-- Initial state:
    kalmanFilterAngle.statePre.at<float>(0) = 90; //-- initial angle
    kalmanFilterAngle.statePre.at<float>(1) = 0;  //-- initial angular velocity
    
    //-- Set the rest of the matrices:
    cv::setIdentity( kalmanFilterAngle.measurementMatrix );
    cv::setIdentity( kalmanFilterAngle.processNoiseCov, cv::Scalar::all(0.0001));
    cv::setIdentity( kalmanFilterAngle.measurementNoiseCov, cv::Scalar::all(0.1));
    cv::setIdentity( kalmanFilterAngle.errorCovPost, cv::Scalar::all(0.1));



    //-- Kalman filter for estimating hand center
    //---------------------------------------------------------------------

    //-- Create filter:
    kalmanFilterCenter.init( 4, 2, 0);
    kalmanFilterCenter.transitionMatrix = *( cv::Mat_<float>(4, 4) << 1, 0, 1, 0,
                                                                0, 1, 0, 1,
                                                                0, 0, 1, 0,
                                                                0, 0, 0, 1);
    //-- Get mouse position:
    std::pair <int, int> initial_mouse = getMousePos( );

    //-- Initial state:
    kalmanFilterCenter.statePre.at<float>(0) = initial_mouse.first;  //-- x Position
    kalmanFilterCenter.statePre.at<float>(1) = initial_mouse.second; //-- y Position
    kalmanFilterCenter.statePre.at<float>(2) = 0;                    //-- x Velocity
    kalmanFilterCenter.statePre.at<float>(3) = 0;                    //-- y Velocity

    //-- Set the rest of the matrices:
    cv::setIdentity( kalmanFilterCenter.measurementMatrix );
    cv::setIdentity( kalmanFilterCenter.processNoiseCov, cv::Scalar::all(0.0001));
    cv::setIdentity( kalmanFilterCenter.measurementNoiseCov, cv::Scalar::all(0.1));
    cv::setIdentity( kalmanFilterCenter.errorCovPost, cv::Scalar::all(0.1));
}
 All Classes Functions Variables