您的位置:首页 > 其它

cvGetQuadrangleSubPix 图像旋转缩放

2013-08-22 14:15 246 查看
#include "cv.h"

#include "highgui.h"

#include "math.h"

int main( int argc, char** argv )

{

IplImage* src;

/* the first command line parameter must be image file name */

if( argc==2 || (src = cvLoadImage("C:\\Users\\liang.guo\\Downloads\\opencvtest\\tesseract测试\\tesseract-build\\tesseract-ocr\\vs2010\\测试\\ceshi\\word\\a.jpg", -1))!=0)

{

IplImage* dst = cvCloneImage( src );

int delta = 1;

int angle = 0;

int opt = 0; // 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);

for (int j=0;j<6;j++)

{

for(int jj=0;jj<6;jj++)

{

CvScalar guo =cvGet2D(src,j,jj);

CvScalar guo2 =cvGet2D(dst,j,jj);

}

}



cvNamedWindow( "dst", 1 );

cvShowImage( "dst", dst );

for( ;; )

{



if(cvWaitKey() == 27)

break;

}



angle =(int) (angle + delta) % 360;

} // for-loop

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: