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!
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?