opencv之仿射与透视变换总结

本文总结了在OpenCV中如何实现仿射和透视变换,虽然数学原理复杂,但通过库函数可以轻松操作图像变换。仿射变换基于三个点,而透视变换作为3D平面变换,需要四个点来确定。
摘要由CSDN通过智能技术生成

对于仿射变换和透视变换的数学原理没有看懂,虽然是矩阵之间的各种转换,但是借用opencv函数可以轻易实现对图片的变换。放射变换要基于图片的三个点变换,而透视变换是3D平面,故其需要4个固定点才能 变换。开始介绍:

仿射变换:

void warpAffine(InputArray src, OutputArray dst, InputArray M, Size dsize, int flags=INTER_LINEAR, int borderMode=BORDER_CONSTANT, const Scalar& borderValue=Scalar())
参数InputArray src:输入变换前图像;
参数OutputArray dst:输出变换后图像,需要初始化一个空矩阵用来保存结果,不用设定矩阵尺寸;
参数InputArray M:变换矩阵,用另一个函数getAffineTransform()计算;
参数Size dsize:设置输出图像大小;
参数int flags=INTER_LINEAR:设置插值方式,默认方式为线性插值

对于仿射变换矩阵M的求解用函数:

Mat getAffineTransform(const Point2f* src, const Point2f* dst)
src和dst分别是原图的三个固定顶点、目标图像的三个固定顶点。



透视变换:

void warpPerspective(InputArray src,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值