#include "highgui.h"
#include "cv.h"
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
IplImage* src = cvLoadImage("lena.jpg");
IplImage* dst = cvCloneImage(src);
int delta = 1;
int angle = 0;
int opt = 1; //1表示旋转加缩放,0表示旋转
double factor; //表示方法系数
cvNamedWindow("src",CV_WINDOW_AUTOSIZE);
cvShowImage("src",src);
for (; ;)
{
float m[6];
CvMat M = cvMat(2, 3, CV_32F,m);
int w = src->width;
int h = src->height;
if(opt)
{
factor = (cos(angle*CV_PI/180) + 1.05)*2;
}
else
{
factor = 1;
}
m[0] = (float)(factor*cos(-angle*2*CV_PI/180));
m[1] = (float)(factor*sin(-angle*2*CV_PI/180));
m[3] = -m[1];
m[4] = m[0];
m[2] = w*0.5f;
m[5] = h*0.5f;
cvGetQuadrangleSubPix(src,dst,&M);
cvNamedWindow("dst",1);
cvShowImage("dst",dst);
if (cvWaitKey(5) == 'q')
{
break;
}
angle = (int)(angle + delta) % 360;
}
}