zoukankan      html  css  js  c++  java
  • An affine transformation

    #include <cv.h>
    #include <highgui.h>
    #define affine
    #ifdef affine
    int main()
    {
       CvPoint2D32f srcTri[3], dstTri[3];
       CvMat* rot_mat = cvCreateMat(2,3,CV_32FC1);
       CvMat* warp_mat = cvCreateMat(2,3,CV_32FC1);
       IplImage *src, *dst;
       if(((src=cvLoadImage(".//1.jpg",1)) != 0 ))
        {
       dst = cvCloneImage(src);
       dst->origin = src->origin;
       cvZero(dst);

       //COMPUTE WARP MATRIX
       srcTri[0].x = 0;          //src Top left
       srcTri[0].y = 0;
       srcTri[1].x = src->width - 1;    //src Top right
       srcTri[1].y = 0;
       srcTri[2].x = 0;          //src Bottom left
       srcTri[2].y = src->height - 1;
       //- - - - - - - - - - - - - - -//
       //dstTri[0].x = src->width*0.0;    //dst Top left
       //dstTri[0].y = src->height*0.33;
       //dstTri[1].x = src->width*0.85; //dst Top right
       //dstTri[1].y = src->height*0.25;
       //dstTri[2].x = src->width*0.15; //dst Bottom left
       //dstTri[2].y = src->height*0.7;
       dstTri[0].x = src->width*0.1;    //dst Top left
       dstTri[0].y = src->height*0.0;
       dstTri[1].x = src->width*1; //dst Top right
       dstTri[1].y = src->height*0.1;
       dstTri[2].x = src->width*0; //dst Bottom left
       dstTri[2].y = src->height*0.9;
       cvGetAffineTransform(srcTri,dstTri,warp_mat);
       cvWarpAffine(src,dst,warp_mat);

       cvNamedWindow("src");
       cvNamedWindow("dst");
       cvShowImage("src" , src);
       cvShowImage("dst" , dst);
       //cvWaitKey(0);

       //cvCopy(dst,src);

       //COMPUTE ROTATION MATRIX
       CvPoint2D32f center = cvPoint2D32f(src->width/2,
                                             src->height/2);
       double angle = 30;
       double scale = 1;
       cv2DRotationMatrix(center,angle,scale,rot_mat);
       cvWarpAffine(src,dst,rot_mat);

       //DO THE TRANSFORM:
       cvNamedWindow( "Affine_Transform", 1 );
          cvShowImage( "Affine_Transform", dst );
          cvWaitKey();
        }
       cvReleaseImage(&dst);
       cvReleaseMat(&rot_mat);
       cvReleaseMat(&warp_mat);
        return 0;
    }
    #endif

    angle = –8.0时 效果图如下:

    QQ截图20120727170347

    angle = 30时 效果图如下:

    QQ截图20120727170442

  • 相关阅读:
    Java中Collections的min和max方法
    Java中Collections的frequency方法
    Java中Collections的binarySearch方法
    uniapp 样式记录
    uniapp记录
    uniapp 弹窗输入
    uniapp 扫描
    uniapp for显示数据改变时,绑定的list值同时改变
    dev随笔记录
    easyui 使用技巧
  • 原文地址:https://www.cnblogs.com/freedesert/p/2612328.html
Copyright © 2011-2022 走看看