getRotationMatrix2D和warpAffine函数算法

一直找不到这两个函数的源码,就学习了一下此函数的算法,希望有博主大佬给我点途径看看OpenCV这两个函数的源码,以下是我学习这个算法的一点心得,具体计算过程在最后面,前面主要介绍一些概念:

getRotationMatrix2D函数调用形式:

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

参数详解:

Point2f center:表示旋转的中心点
double angle:表示旋转的角度
double scale:图像缩放因子

返回是一个2X3的矩阵

warpAffine函数:

warpAffine( src, warp_dst, warp_mat, warp_dst.size() );

函数有以下参数:

src: 输入源图像
warp_dst: 输出图像
warp_mat: 仿射变换矩阵
warp_dst.size(): 输出图像的尺寸

图像的坐标原点在左上角,右为横轴正方向,下为纵轴正方向,如下
在这里插入图片描述
如下图,(n,m)为旋转中心点,(y,x)为旋转前的点,(y’,x’)为旋转后的点,θ是旋转的角度,L是旋转前点到旋转中心点的距离,a是图形变换的缩放比例,变换后点到旋转中心点的距离为L*a,通过极坐标系的方法来计算(注意极坐标的y轴正方向也是向下):
在这里插入图片描述
在这里插入图片描述
getRotationMatrix2D即得到此2X3矩阵,warpAffine则进行映射

©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页