cv2DRotationMatrix的旋转变换矩阵

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

CvMat* cv2DRotationMatrix(CvPoint2D32f center, double angle, double scale, CvMat* map_matrix)

的解释中说,其实是用到了下面的矩阵:

The function calculates the following matrix:

where

α β好理解,那X,Y平移部分的(1-α)*center.x - β*center.y 和β*center.x + (1-α)*center.y是怎么来的呢?

其实就是先通过一次平移变换转换原坐标系统到以参考点为原点的坐标系统,在新得到的坐标系统中通过旋转变换得到点的坐标,然后再经过一次恢复平移的变换来把当前新系统中的坐标转换到旧系统中的坐标,公式如下:

|1 0 tx|   |α β 0 |   |1 0 -tx|
|0 1 ty| *|-β α 0| * |0 1 -ty|
|0 0 1|    |0 0 1|      |0 0  1 |

这三个矩阵的乘积就是

你可能感兴趣的:(cv2DRotationMatrix的旋转变换矩阵)