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

posted @ 2012-07-27 18:38  freedesert  阅读(209)  评论(0编辑  收藏  举报