Opencv下怎么旋转图形

Opencv下如何旋转图形?
IplImage* img;
cvLoadImage(/**/,img);
给写个旋转30°的例子吧!

------解决方案--------------------
C/C++ code

//图像旋转,angle是角度
IplImage* FitRotate (IplImage* Img_old, double angle)
{

IplImage* Img_tmp = NULL; 

double anglerad  = (CV_PI* (angle/180)) ;
int newheight =int (fabs(( sin(anglerad)*Img_old->width )) + fabs(( cos(anglerad)*Img_old->height )) );
int newwidth  =int (fabs(( sin(anglerad)*Img_old->height)) + fabs(( cos(anglerad)*Img_old->width)) );
     
Img_tmp = cvCreateImage(cvSize(newwidth,newheight), IPL_DEPTH_8U, 3);
cvFillImage(Img_tmp,0);//目的图像 使用扩展的大小

IplImage* dst = cvCloneImage( Img_old );//目的图像 与原图像等大  

float m[6];            
CvMat M = cvMat( 2, 3, CV_32F, m );
int w = Img_old->width;
int h = Img_old->height;

m[0] = (float)(cos(angle*CV_PI/180.));
m[1] = (float)(sin(angle*CV_PI/180.));
m[2] = w*0.5f;
m[3] = -m[1];
m[4] = m[0];
m[5] = h*0.5f;
          
cvGetQuadrangleSubPix( Img_old, dst, &M);
cvGetQuadrangleSubPix( Img_old, Img_tmp, &M);
  return Img_tmp;
}