(一)
简单的模仿了下,运行后的效果是旋转的图片
#include <cv.h>
#include <highgui.h>
#include <math.h>
int main()
{
IplImage *p = 0,*p1 = 0;
if(( p = cvLoadImage("lena.jpg"))!=0)
{
int delta = 1;
int angle = 0;
int opt = 0;//1:旋转加缩放 0:旋转
double factor;
p1 = cvCloneImage(p);
cvNamedWindow("原始",1);
cvShowImage("原始",p);
while (1)
{
float m[6];
CvMat M = cvMat(2,3,CV_32F,m);
int w = p->width;
int h = p->height;
if(opt) 选择旋转缩放的相关事情
factor = (cos (angle*CV_PI/180.0)+1.0)*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;
cvZero(p1);清空p1
cvGetQuadrangleSubPix(p,p1,&M);http://xiangge2009.blog.sohu.com/147112222.html http://blog.csdn.net/xiaowei_cqu/article/details/7616044
cvNamedWindow("新图",1);
cvShowImage("新图",p1);
if(cvWaitKey(1) == 27) break;
angle = (int) (angle + delta) % 360;
}
}
return 0;
}