cvGetQuadrangleSubPix 图像旋转缩放

#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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值