openCv 图像顺时针 逆时针旋转

               

通过下面这个函数调用

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

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

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

void Rotate90(IplImage *workImg,int angle)int opt = 0;                            //  1: 加缩放   0: 仅旋转 double factor;                          //  缩放因子 IplImage *pImage; IplImage *pImgRotation = NULL; pImage = workImg; pImgRotation = cvCloneImage(workImg); angle=-angle; //  创建 M 矩阵 float m[6]; //      Matrix m looks like: //      [ m0  m1  m2 ] ----> [ a11  a12  b1 ] //      [ m3  m4  m5 ] ----> [ a21  a22  b2 ] CvMat M = cvMat(2,3,CV_32F,m); int w = workImg->height; int h = workImg->width; if (opt) factor = (cos(angle*CV_PI/180.)+1.0)*2else factor = 1; m[0] = (float)(factor*cos(-angle*CV_PI/180.)); m[1] = (float)(factor*sin(-angle*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) + b cvZero(pImgRotation); cvGetQuadrangleSubPix(pImage,pImgRotation,&M); //--------------------------------------------------------- cvNamedWindow("Rotation Image"); cvFlip(pImgRotation); cvShowImage("Rotation Image",pImgRotation); cvReleaseImage( &pImgRotation ); cvWaitKey(0); cvDestroyWindow("Rotation Image");}


           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

猜你喜欢

转载自blog.csdn.net/kahncc/article/details/87778051