0

我真的希望这不会浪费任何人的时间,但我遇到了一个小问题。我可以使用以下方法构造转换矩阵:

M = 
s*cos(theta)        -s*sin(theta)       t_x
s*sin(theta)        s*cos(theta)        t_y
0                   0                   1

如果我为 theta、s(比例)和 tx/ty 提供正确的值,然后将此矩阵用作 cv::warpPerspective 的参数之一,则此方法有效。问题在于该矩阵围绕(0,0)像素旋转,而我希望它围绕中心像素(cols / 2,rows / 2)旋转。如何将中心点旋转合并到这个矩阵中?

4

1 回答 1

1

两种可能。第一种是使用函数 getRotationMatrix2D ,它将旋转中心作为参数,并为您提供一个 2x3 矩阵。添加第三行,你就完成了。

第二种可能性是构造一个额外的矩阵,在旋转前后平移图片:

T = 
1 0 -cols/2
0 1 -rows/2
0 0 1

将您的旋转矩阵 M 与这个相乘以获得总变换 -TMT(例如,使用函数 gemm)并将这个与 warpPerspective 应用。

于 2013-02-05T08:54:33.877 回答