Update to 2.0.0 tree from current Fremantle build
[opencv] / samples / c / kalman.c
index fb18644..5418c42 100644 (file)
@@ -1,4 +1,4 @@
-/* 
+/*
    Tracking of rotating point.
    Rotation speed is constant.
    Both state and measurements vectors are 1D (a point angle),
    Tracking of rotating point.
    Rotation speed is constant.
    Both state and measurements vectors are 1D (a point angle),
@@ -15,6 +15,8 @@
 #pragma package <opencv>
 #endif
 
 #pragma package <opencv>
 #endif
 
+#define CV_NO_BACKWARD_COMPATIBILITY
+
 #ifndef _EiC
 #include "cv.h"
 #include "highgui.h"
 #ifndef _EiC
 #include "cv.h"
 #include "highgui.h"
@@ -24,7 +26,7 @@
 int main(int argc, char** argv)
 {
     const float A[] = { 1, 1, 0, 1 };
 int main(int argc, char** argv)
 {
     const float A[] = { 1, 1, 0, 1 };
-    
+
     IplImage* img = cvCreateImage( cvSize(500,500), 8, 3 );
     CvKalman* kalman = cvCreateKalman( 2, 1, 0 );
     CvMat* state = cvCreateMat( 2, 1, CV_32FC1 ); /* (phi, delta_phi) */
     IplImage* img = cvCreateImage( cvSize(500,500), 8, 3 );
     CvKalman* kalman = cvCreateKalman( 2, 1, 0 );
     CvMat* state = cvCreateMat( 2, 1, CV_32FC1 ); /* (phi, delta_phi) */
@@ -39,23 +41,23 @@ int main(int argc, char** argv)
     for(;;)
     {
         cvRandArr( &rng, state, CV_RAND_NORMAL, cvRealScalar(0), cvRealScalar(0.1) );
     for(;;)
     {
         cvRandArr( &rng, state, CV_RAND_NORMAL, cvRealScalar(0), cvRealScalar(0.1) );
-        
+
         memcpy( kalman->transition_matrix->data.fl, A, sizeof(A));
         cvSetIdentity( kalman->measurement_matrix, cvRealScalar(1) );
         cvSetIdentity( kalman->process_noise_cov, cvRealScalar(1e-5) );
         cvSetIdentity( kalman->measurement_noise_cov, cvRealScalar(1e-1) );
         cvSetIdentity( kalman->error_cov_post, cvRealScalar(1));
         cvRandArr( &rng, kalman->state_post, CV_RAND_NORMAL, cvRealScalar(0), cvRealScalar(0.1) );
         memcpy( kalman->transition_matrix->data.fl, A, sizeof(A));
         cvSetIdentity( kalman->measurement_matrix, cvRealScalar(1) );
         cvSetIdentity( kalman->process_noise_cov, cvRealScalar(1e-5) );
         cvSetIdentity( kalman->measurement_noise_cov, cvRealScalar(1e-1) );
         cvSetIdentity( kalman->error_cov_post, cvRealScalar(1));
         cvRandArr( &rng, kalman->state_post, CV_RAND_NORMAL, cvRealScalar(0), cvRealScalar(0.1) );
-        
+
         for(;;)
         {
             #define calc_point(angle)                                      \
                 cvPoint( cvRound(img->width/2 + img->width/3*cos(angle)),  \
         for(;;)
         {
             #define calc_point(angle)                                      \
                 cvPoint( cvRound(img->width/2 + img->width/3*cos(angle)),  \
-                         cvRound(img->height/2 - img->width/3*sin(angle))) 
+                         cvRound(img->height/2 - img->width/3*sin(angle)))
 
             float state_angle = state->data.fl[0];
             CvPoint state_pt = calc_point(state_angle);
 
             float state_angle = state->data.fl[0];
             CvPoint state_pt = calc_point(state_angle);
-            
+
             const CvMat* prediction = cvKalmanPredict( kalman, 0 );
             float predict_angle = prediction->data.fl[0];
             CvPoint predict_pt = calc_point(predict_angle);
             const CvMat* prediction = cvKalmanPredict( kalman, 0 );
             float predict_angle = prediction->data.fl[0];
             CvPoint predict_pt = calc_point(predict_angle);
@@ -70,7 +72,7 @@ int main(int argc, char** argv)
 
             measurement_angle = measurement->data.fl[0];
             measurement_pt = calc_point(measurement_angle);
 
             measurement_angle = measurement->data.fl[0];
             measurement_pt = calc_point(measurement_angle);
-            
+
             /* plot points */
             #define draw_cross( center, color, d )                                 \
                 cvLine( img, cvPoint( center.x - d, center.y - d ),                \
             /* plot points */
             #define draw_cross( center, color, d )                                 \
                 cvLine( img, cvPoint( center.x - d, center.y - d ),                \
@@ -84,7 +86,7 @@ int main(int argc, char** argv)
             draw_cross( predict_pt, CV_RGB(0,255,0), 3 );
             cvLine( img, state_pt, measurement_pt, CV_RGB(255,0,0), 3, CV_AA, 0 );
             cvLine( img, state_pt, predict_pt, CV_RGB(255,255,0), 3, CV_AA, 0 );
             draw_cross( predict_pt, CV_RGB(0,255,0), 3 );
             cvLine( img, state_pt, measurement_pt, CV_RGB(255,0,0), 3, CV_AA, 0 );
             cvLine( img, state_pt, predict_pt, CV_RGB(255,255,0), 3, CV_AA, 0 );
-            
+
             cvKalmanCorrect( kalman, measurement );
 
             cvRandArr( &rng, process_noise, CV_RAND_NORMAL, cvRealScalar(0),
             cvKalmanCorrect( kalman, measurement );
 
             cvRandArr( &rng, process_noise, CV_RAND_NORMAL, cvRealScalar(0),
@@ -93,14 +95,14 @@ int main(int argc, char** argv)
 
             cvShowImage( "Kalman", img );
             code = (char) cvWaitKey( 100 );
 
             cvShowImage( "Kalman", img );
             code = (char) cvWaitKey( 100 );
-            
+
             if( code > 0 )
                 break;
         }
         if( code == 27 || code == 'q' || code == 'Q' )
             break;
     }
             if( code > 0 )
                 break;
         }
         if( code == 27 || code == 'q' || code == 'Q' )
             break;
     }
-    
+
     cvDestroyWindow("Kalman");
 
     return 0;
     cvDestroyWindow("Kalman");
 
     return 0;