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

  • 相关阅读:
    JavaScript核心参考
    面向对象的程序设计之工厂模式
    ES6中promise的使用方法
    详解 Vue 2.4.0 带来的 4 个重大变化
    Vue.js 1.x 和 2.x 实例的生命周期
    表单控件的全面分析
    元素的一些常用属性
    为表格增加的方法
    Element类型知识大全
    6-3.斜体标签
  • 原文地址:https://www.cnblogs.com/freedesert/p/2612328.html
Copyright © 2011-2022 走看看