openCv 图像顺时针、逆时针旋转

通过下面这个函数调用

Rotate90(workImg,270);//顺时针旋转

Rotate90(workImg,90);//逆时针旋转

实现,其实用该函数旋转任意度数对正方形图都ok,只是长方形图旋转后会有拉伸部分,不好掌握新图的长宽。

[cpp]  view plain copy
  1. void Rotate90(IplImage *workImg,int angle)  
  2. {  
  3.     int opt = 0;                            //  1: 加缩放   0: 仅旋转  
  4.     double factor;                          //  缩放因子  
  5.     IplImage *pImage;  
  6.     IplImage *pImgRotation = NULL;  
  7.   
  8.     pImage = workImg;  
  9.     pImgRotation = cvCloneImage(workImg);  
  10.   
  11.     angle=-angle;  
  12.   
  13.     //  创建 M 矩阵  
  14.     float m[6];  
  15.     //      Matrix m looks like:  
  16.     //      [ m0  m1  m2 ] ----> [ a11  a12  b1 ]  
  17.     //      [ m3  m4  m5 ] ----> [ a21  a22  b2 ]  
  18.   
  19.     CvMat M = cvMat(2,3,CV_32F,m);  
  20.     int w = workImg->height;  
  21.     int h = workImg->width;  
  22.   
  23.     if (opt) factor = (cos(angle*CV_PI/180.)+1.0)*2;  
  24.     else factor = 1;  
  25.   
  26.     m[0] = (float)(factor*cos(-angle*CV_PI/180.));  
  27.     m[1] = (float)(factor*sin(-angle*CV_PI/180.));  
  28.     m[3] = -m[1];  
  29.     m[4] =  m[0];  
  30.     //  将旋转中心移至图像中心  
  31.     m[2] = w*0.5f;  
  32.     m[5] = h*0.5f;  
  33.   
  34.     //---------------------------------------------------------  
  35.     //  dst(x,y) = A * src(x,y) + b  
  36.     cvZero(pImgRotation);  
  37.     cvGetQuadrangleSubPix(pImage,pImgRotation,&M);  
  38.     //---------------------------------------------------------  
  39.   
  40.     cvNamedWindow("Rotation Image");  
  41.     cvFlip(pImgRotation);  
  42.     cvShowImage("Rotation Image",pImgRotation);  
  43.   
  44.     cvReleaseImage( &pImgRotation );  
  45.     cvWaitKey(0);  
  46.   
  47.     cvDestroyWindow("Rotation Image");  
  48. }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值