项目要用到图像旋转,OpenCV里面居然没有专门封装好的函数,只好自己写了。根据《learnning OpenCV》发现效果不是很理想,旋转后图像大小不变,可是图像却被裁减了。
例子如下:
int main( int argc, char** argv )
{
IplImage* src=cvLoadImage("C:\\Users\\Liu\\Desktop\\bridge.bmp",1);
IplImage* dst = cvCloneImage( src );
int delta = 1;
int angle = 10;
double factor;
cvNamedWindow( "src", 1 );
cvShowImage( "src", src );
float m[6];
CvMat M = cvMat( 2, 3, CV_32F, m );
int w = src->width;
int h = src->height;
m[0] = (float)cos(-angle*2*CV_PI/180.);
m[1] = (float)sin(-angle*2*CV_PI/180.);
m[3] = -m[1];
m[4] = m[0];
// 将旋转中心移至图像中间
m[2] = w*0.5f;
m[5] = h*0.5f;
// dst(x,y) = A * src(x,y)
cvGetQuadrangleSubPix( src, dst, &M);
cvNamedWindow( "dst", 1 );
cvShowImage( "dst", dst );
cvWaitKey(0);
return 0;
}