OpenCvt图像仿射变换、透视变换,详细解读

1、图像仿射变换仿射变换就是图像的旋转、平移和缩放操作的统称,可以表示为线性变换和平移变换的叠加。OpenCv4 中没有专门的图像旋转函数,而是通过图像的仿射 变换实现图像的旋转。首先需要确定旋转角度和旋转中心,之后确定旋转矩阵,最终通过仿射变换实现图像旋转。由getRotationMatrix2D() 函数用于计算旋转矩阵,提供了warpAffine() 函数用于实现图像的仿射变换。getRotationMatrix2D()函数原型Mat cv::getRotationMatrix2D(
摘要由CSDN通过智能技术生成

1、图像仿射变换

仿射变换就是图像的旋转、平移和缩放操作的统称,可以表示为线性变换和平移变换的叠加。

OpenCv4 中没有专门的图像旋转函数,而是通过图像的仿射 变换实现图像的旋转。首先需要确定旋转角度和旋转中心,之后确定旋转矩阵,最终通过仿射变换实现图像旋转。由getRotationMatrix2D() 函数用于计算旋转矩阵,提供了warpAffine() 函数用于实现图像的仿射变换。

getRotationMatrix2D()函数原型

Mat cv::getRotationMatrix2D( Point2f center, double angle, double scale )

其中,center : 图像旋转的中心位置

angle : 图像旋转的角度,单位为度,正值为逆时针旋转

scale :两个轴的比例因子,可以实现旋转过程中的图像缩放,不缩放则为1

该函数返回图像旋转矩阵,返回值的数据类型时Mat 类,是一个2×3 的矩阵(具体不展开了)。

在确定了旋转矩阵后,通过warpAffine() 函数进行仿射变换,就可以实现图像的旋转。

warpAffine() 函数原型

void cv::warpAffine(InputArray src, OutputArray dst, InputArray M, Size dsize, 
                     int flags = INTER_LINEAR,  int borderMode = BORDER_CONSTANT , 
                     const Scalar& borderValue = Scalar())

其中,src:输入图像

dst:仿射变换后输出图像,与src 数据类型相同,尺寸与·dsize 相同

M:2×3 的变换矩阵

dsize:输出图像的尺寸。

flags:插值方法标志,可选参数及含义见下表

borderMode: 像素边界外推方法的标志

borderValue: 填充边界使用的数值,默认情况下为0。

该函数第三个参数为前面求取的图像旋转矩阵。

图像仿射变换插值方法标志 作用
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值