⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rotate.cpp

📁 以Microsoft Visual C++ 6.0为平台
💻 CPP
字号:
#include "cv.h"
#include "highgui.h"
#include "math.h"

int main( int argc, char** argv )
{
	IplImage* src;
	char* filename=argc==2?argv[1]:(char*)"D://Program Files//OpenCV//samples//c//lena.jpg";
	if((src=cvLoadImage(filename,1))==0)
		return -1;
	/* the first command line parameter must be image file name */
         
		IplImage* dst = cvCloneImage( src );
		int  delta = 1;
		int  angle = 0;
        int opt = 1;   // 1: 旋转加缩放
                       // 0:  仅仅旋转
        double factor;
        cvNamedWindow( "src", 1 );
		cvShowImage( "src", src );

		for(;;)
		{
			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 = src->width;
			int h = src->height;
			if(opt) // 旋转加缩放
                factor = (cos(angle*CV_PI/180.) + 1.05)*2;
            else //  仅仅旋转
                factor = 1;
			m[0] = (float)(factor*cos(-angle*2*CV_PI/180.));
			m[1] = (float)(factor*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) + b
			cvGetQuadrangleSubPix( src, dst, &M);
			cvNamedWindow( "dst", 1 );
			cvShowImage( "dst", dst );
			if( cvWaitKey(5) == 27 )
				break;
			angle =(int) (angle + delta) % 360;
		} // for-loop

		return 0;


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -