透视变换与仿射变换有些类似,但相比而言有以下不同:
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=src->origin;
cvZero(dst);
cvZero(dss);
//透视变换的四个点的坐标
srcQuad[0].x=0;
srcQuad[0].y=0;
srcQuad[1].x=src->width-1

这篇博客探讨了OpenCV中的透视变换与仿射变换的区别,重点在于透视变换需要四个定位点,使用3*3的矩阵进行描述,并且与仿射变换在效果上存在差异。博主分享了实现透视变换的具体代码,帮助读者理解这一概念。
最低0.47元/天 解锁文章
6114

被折叠的 条评论
为什么被折叠?



