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

  • 相关阅读:
    altium designer 工程中的原理图库和封装如何提取出来
    555是集成电路
    安装JDK+Tomcat,进行环境变量设置,和运行JSP
    2018年房价会涨吗?
    MySQLroot密码的恢复方法
    mysql中的数据类型长度
    感觉还不错,受益很高,有保障
    phpstorm问题
    Mac上的抓包工具Charles
    解决Firefox显示“已阻止载入混合活动内容”的方法
  • 原文地址:https://www.cnblogs.com/freedesert/p/2612328.html
Copyright © 2011-2022 走看看