一直找不到这两个函数的源码,就学习了一下此函数的算法,希望有博主大佬给我点途径看看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则进行映射