透视变换与仿射变换有些类似,但相比而言有以下不同:
1. 仿射需要三个定位点,而且第一个是原点出发,一直到原点对点。透视需要四个,第一个是原点,最后一个是原点对 点。
2. 仿射的矩阵是2*3的矩阵,透视的矩阵式3*3的矩阵
3. 仿射和透视实现的效果不同
具体代码如下:
#include "stdio.h"
#include "highgui.h"
#include "cv.h"
int main(int argc, char* argv[])
{
CvPoint2D32f srcQuad[4],dstQuad[4],srcQuad1[3],dstQuad1[3];
CvMat *warp_matrix=cvCreateMat(3,3,CV_32FC1);//透视的变换矩阵,必须是3*3
CvMat *warp_mat=cvCreateMat(2,3,CV_32FC1);//仿射的变换矩阵,必须是2*3
IplImage *src,*dst,*dss;
src=cvLoadImage("Lena.png");
dst=cvCloneImage(src);
dst->origin=src->origin;
dss=cvCloneImage(src);
dss->origin=s