Opencv下怎么旋转图形
Opencv下如何旋转图形?
IplImage* img;
cvLoadImage(/**/,img);
给写个旋转30°的例子吧!
------解决方案--------------------
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; }