zoukankan      html  css  js  c++  java
  • OPENCV 中的图像旋转与缩放

    在OPENCV中实现图像旋转,可以采用图像的仿射变换形式,下面给出一个样例程序,说明如何实现图像的旋转与缩放。

    #include "cv.h"
    #include "highgui.h"
    #include "math.h"
    int main( int argc, char** argv )
    {
     IplImage* src=0;
     IplImage* dst = 0;

        /* the first command line parameter must be image file name */
     if( argc==2 ) && (src = cvLoadImage(argv[1], -1))!=0)
     {
      int  delta = 1;
      int  angle = 0;
            int opt = 0;   // 1: 旋转加缩放
                           // 0:  仅仅旋转
            double factor;

            dst = cvCloneImage( src );
            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.0)*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
                cvZero(dst);
       cvGetQuadrangleSubPix( src, dst, &M);
       cvNamedWindow( "dst", 1 );
       cvShowImage( "dst", dst );
       if( cvWaitKey(1) == 27 )
        break;
       angle =(int) (angle + delta) % 360;
      } // for-loop
     }
     return 0;
    }

  • 相关阅读:
    bfs入门 (HDU
    Codeforces Round #570 (Div. 3)B
    nyoj 277-车牌号 (map, pair, iterator)
    nyoj 276-比较字母大小 (顺序比较, 逆序输出)
    nyoj 275-队花的烦恼一 (stack, push, pop)
    nyoj 274-正三角形的外接圆面积 (R = PI * a * a / 3)
    nyoj 273-字母小游戏 (getline(cin, string))
    nyoj 268-荷兰国旗问题 (count)
    nyoj 266-字符串逆序输出 (isdigit(), geline(cin, my_string))
    nyoj 264-国王的魔镜 (string[-1:-int(str_len/2+1):-1])
  • 原文地址:https://www.cnblogs.com/wqj1212/p/1511961.html
Copyright © 2011-2022 走看看