学习OpenCV课后题4.7

#include <cv.h>
#include <cvcam.h>
#include <cxcore.h>
#include <highgui.h>

#pragma comment(lib,"cv.lib")
#pragma comment(lib,"cvcam.lib")
#pragma comment(lib,"cxcore.lib")
#pragma comment(lib,"highgui.lib")

void main()
{
 IplImage *src_image=cvLoadImage("1.jpg");
 assert(src_image!=NULL);

 IplImage *dst_image=cvCreateImage(cvGetSize(src_image),src_image->depth,src_image->nChannels);
 assert(dst_image!=NULL);
 dst_image->origin=src_image->origin;
 dst_image=cvCloneImage(src_image);

 CvPoint2D32f srcTri[3];
 CvPoint2D32f dstTri[3];

 CvMat *warp_mat=cvCreateMat(2,3,CV_32FC1);

 srcTri[0].x=0;
 srcTri[0].y=0;
 srcTri[1].x=src_image->width-1;
 srcTri[1].y=0;
 srcTri[2].x=0;
 srcTri[2].y=src_image->height-1;

 //创建窗口
 cvNamedWindow("Show_Src");
 cvNamedWindow("Show_Dst");
 
 //显示图像
 cvShowImage("Show_Src",src_image);
 cvShowImage("Show_Dst",dst_image);

 while (1)
 {
  char c=cvWaitKey(0);

  switch (c)
  {
  case '1':
   {
    dstTri[0].x=src_image->width*0.0;
    dstTri[0].y=src_image->height*0.0;
    dstTri[1].x=src_image->width*0.90;
    dstTri[1].y=src_image->height*0.10;
    dstTri[2].x=src_image->width*0.10;
    dstTri[2].y=src_image->height*0.90;
   }
  break;
  case '2':
   {
    dstTri[0].x=src_image->width*0.0;
    dstTri[0].y=src_image->height*0.0;
    dstTri[1].x=src_image->width*0.80;
    dstTri[1].y=src_image->height*0.20;
    dstTri[2].x=src_image->width*0.20;
    dstTri[2].y=src_image->height*0.80;
   }
  break;
  case '3':
   {
    dstTri[0].x=src_image->width*0.0;
    dstTri[0].y=src_image->height*0.0;
    dstTri[1].x=src_image->width*0.70;
    dstTri[1].y=src_image->height*0.30;
    dstTri[2].x=src_image->width*0.30;
    dstTri[2].y=src_image->height*0.70;
   }
  break;
  case '4':
   {
    dstTri[0].x=src_image->width*0.0;
    dstTri[0].y=src_image->height*0.0;
    dstTri[1].x=src_image->width*0.60;
    dstTri[1].y=src_image->height*0.40;
    dstTri[2].x=src_image->width*0.40;
    dstTri[2].y=src_image->height*0.60;

   }
  break;
  case '5':
   {
    dstTri[0].x=src_image->width*0.0;
    dstTri[0].y=src_image->height*0.0;
    dstTri[1].x=src_image->width*0.55;
    dstTri[1].y=src_image->height*0.45;
    dstTri[2].x=src_image->width*0.45;
    dstTri[2].y=src_image->height*0.55;
   }
  break;
  case '6':
   {
    dstTri[0].x=src_image->width*0.0;
    dstTri[0].y=src_image->height*0.0;
    dstTri[1].x=src_image->width*0.40;
    dstTri[1].y=src_image->height*0.60;
    dstTri[2].x=src_image->width*0.60;
    dstTri[2].y=src_image->height*0.40;
   }
  break;
  case '7':
   {
    dstTri[0].x=src_image->width*0.0;
    dstTri[0].y=src_image->height*0.0;
    dstTri[1].x=src_image->width*0.30;
    dstTri[1].y=src_image->height*0.70;
    dstTri[2].x=src_image->width*0.70;
    dstTri[2].y=src_image->height*0.30;
   }
  case '8':
   {
    dstTri[0].x=src_image->width*0.0;
    dstTri[0].y=src_image->height*0.0;
    dstTri[1].x=src_image->width*0.20;
    dstTri[1].y=src_image->height*0.80;
    dstTri[2].x=src_image->width*0.80;
    dstTri[2].y=src_image->height*0.20;
   }
  break;
  case '9':
   {
    dstTri[0].x=src_image->width*0.0;
    dstTri[0].y=src_image->height*0.0;
    dstTri[1].x=src_image->width*0.10;
    dstTri[1].y=src_image->height*0.90;
    dstTri[2].x=src_image->width*0.90;
    dstTri[2].y=src_image->height*0.10;
   }
  break;

  default:
   {
    dstTri[0].x=src_image->width*0.0;
    dstTri[0].y=src_image->height*0.0;
    dstTri[1].x=src_image->width*1.0;
    dstTri[1].y=src_image->height*0.0;
    dstTri[2].x=src_image->width*0.0;
    dstTri[2].y=src_image->height*1.0;
   }
  }

  cvGetAffineTransform(srcTri,dstTri,warp_mat);
  cvWarpAffine(src_image,dst_image,warp_mat);
  cvShowImage("Show_Dst",dst_image);

  
 }

  //cvWaitKey();


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值