tags:

views:

223

answers:

1

Hi!When I compile the program,VC2005 always tell :"error C2198: 'cvEigenVV' : too few arguments for call". Part of the code below:

void draw_oxfd_feature( IplImage* img, struct feature* feat, CvScalar color )

{ double m[4] = { feat->a, feat->b, feat->b, feat->c };

double v[4] = { 0 }; double e[2] = { 0 }; CvMat M; CvMat V; CvMat E; double alpha, l1, l2;

/* compute axes and orientation of ellipse surrounding affine region */ cvInitMatHeader( &M, 2, 2, CV_64FC1, m, CV_AUTOSTEP ); cvInitMatHeader( &V, 2, 2, CV_64FC1, v, CV_AUTOSTEP ); cvInitMatHeader( &E, 2, 1, CV_64FC1, e, CV_AUTOSTEP );

cvEigenVV( &M, &V, &E, DBL_EPSILON );

l1 = 1 / sqrt( e[1] ); l2 = 1 / sqrt( e[0] ); alpha = -atan2( v[1], v[0] ); alpha *= 180 / CV_PI;

cvEllipse( img, cvPoint( feat->x, feat->y ), cvSize( l2, l1 ), alpha, 0, 360, CV_RGB(0,0,0), 3, 8, 0 ); cvEllipse( img, cvPoint( feat->x, feat->y ), cvSize( l2, l1 ), alpha, 0, 360, color, 1, 8, 0 ); cvLine( img, cvPoint( feat->x+2, feat->y ), cvPoint( feat->x-2, feat->y ), color, 1, 8, 0 ); cvLine( img, cvPoint( feat->x, feat->y+2 ), cvPoint( feat->x, feat->y-2 ), color, 1, 8, 0 ); // cvCircle(img,cvPoint(cvRound( feat->x ),cvRound( feat->y )),2, color, CV_FILLED, 8, 0); cvCircle(img,cvPoint( cvRound( feat->x ), cvRound( feat->y )), 2,CV_RGB(0,255,0), CV_FILLED, 8, 0 );

}

How to solve the problem?Thank you!

+1  A: 

Take a look at the declaration of the cvEigenVV() function call, wherever that's located. It looks like you are either missing a parameter, or have too many....

Is it possible that there are overloaded versions, and that due to type conversion problems, the wrong one is being called when the overload is being resolved?

jwismar