C API

// structs

struct CvKalman;

// global functions

void
cvCalcAffineFlowPyrLK(
    const CvArr* prev,
    const CvArr* curr,
    CvArr* prev_pyr,
    CvArr* curr_pyr,
    const CvPoint2D32f* prev_features,
    CvPoint2D32f* curr_features,
    float* matrices,
    int count,
    CvSize win_size,
    int level,
    char* status,
    float* track_error,
    CvTermCriteria criteria,
    int flags
    );

double
cvCalcGlobalOrientation(
    const CvArr* orientation,
    const CvArr* mask,
    const CvArr* mhi,
    double timestamp,
    double duration
    );

void
cvCalcMotionGradient(
    const CvArr* mhi,
    CvArr* mask,
    CvArr* orientation,
    double delta1,
    double delta2,
    int aperture_size = 3
    );

void
cvCalcOpticalFlowFarneback(
    const CvArr* prev,
    const CvArr* next,
    CvArr* flow,
    double pyr_scale,
    int levels,
    int winsize,
    int iterations,
    int poly_n,
    double poly_sigma,
    int flags
    );

void
cvCalcOpticalFlowPyrLK(
    const CvArr* prev,
    const CvArr* curr,
    CvArr* prev_pyr,
    CvArr* curr_pyr,
    const CvPoint2D32f* prev_features,
    CvPoint2D32f* curr_features,
    int count,
    CvSize win_size,
    int level,
    char* status,
    float* track_error,
    CvTermCriteria criteria,
    int flags
    );

int
cvCamShift(
    const CvArr* prob_image,
    CvRect window,
    CvTermCriteria criteria,
    CvConnectedComp* comp,
    CvBox2D* box = NULL
    );

CvKalman*
cvCreateKalman(
    int dynam_params,
    int measure_params,
    int control_params = 0
    );

int
cvEstimateRigidTransform(
    const CvArr* A,
    const CvArr* B,
    CvMat* M,
    int full_affine
    );

const CvMat*
cvKalmanCorrect(
    CvKalman* kalman,
    const CvMat* measurement
    );

const CvMat*
cvKalmanPredict(
    CvKalman* kalman,
    const CvMat* control = NULL
    );

int
cvMeanShift(
    const CvArr* prob_image,
    CvRect window,
    CvTermCriteria criteria,
    CvConnectedComp* comp
    );

void
cvReleaseKalman(CvKalman** kalman);

CvSeq*
cvSegmentMotion(
    const CvArr* mhi,
    CvArr* seg_mask,
    CvMemStorage* storage,
    double timestamp,
    double seg_thresh
    );

void
cvUpdateMotionHistory(
    const CvArr* silhouette,
    CvArr* mhi,
    double timestamp,
    double duration
    );

// macros

#define CV_LKFLOW_GET_MIN_EIGENVALS
#define CV_LKFLOW_INITIAL_GUESSES
#define CV_LKFLOW_PYR_A_READY
#define CV_LKFLOW_PYR_B_READY
#define cvKalmanUpdateByMeasurement
#define cvKalmanUpdateByTime