在OpenCV中围绕图像中心旋转,缩放和平移

时间:2013-02-04 09:12:41

标签: image-processing opencv

我真的希望这不浪费任何人的时间,但我遇到了一个小问题。我能够使用以下内容构建转换矩阵:

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

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

1 个答案:

答案 0 :(得分:1)

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

第二种可能性是构建一个额外的矩阵,在旋转之前和之后翻译图片:

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

将旋转矩阵M乘以此旋转矩阵M以获得总变换-TMT(例如,使用函数gemm)并将其应用于warpPerspective。

相关问题