#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();
}