// rotate the image
frame = cvQueryFrame(capture);
int dx,dy,s;
double thetaDegree;
double thetaRadian;

//for rotation
IplImage *Rotation;
Rotation = cvCloneImage(frame);
Rotation->origin = frame->origin;
CvZero(Rotation);

//get the rotation degree

thetaRadian = atan(s);      // **the s I have algorithm to do the calculation **
thetaDegree = thetaRadian *(180 / PI);

CvMat *rot = cvgetRotationMatrix2D(center, thetaDegree, 1.0);
cvWarpAffine(frame, Rotation, rot,sizeof(frame));

cvNameWindow("Rotation",1);
cvShowImage("Rotation",Rotation);
cvReleaseImage(&Rotation);
cvReleaseMat(&rot);

现在的错误是函数cvWarpAffine的参数太少了,我真的不知道为什么,因为我经历了很多例子并向他们学习。拜托,有人可以帮我吗?

最佳答案

如果this是正确的参考,则看起来您正在混合使用C和C++接口(interface)。

该文档提供了以下类似C的接口(interface):

C: void cvWarpAffine(const CvArr* src, CvArr* dst, const CvMat* map_matrix,
                     int flags=CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS,
                     CvScalar fillval=cvScalarAll(0) )

在这种情况下,您不需要大小,但是我不明白为什么大小不会转换为标志。

关于c++ - 无法编译此图像旋转代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43606020/

10-11 18:41