我真的希望这不浪费任何人的时间,但我遇到了一个小问题。我能够使用以下内容构建转换矩阵:
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)。怎样才能将中心点旋转到这个矩阵中?
答案 0 :(得分:1)
两种可能性。第一种是使用函数getRotationMatrix2D,它将旋转中心作为参数,并为您提供2x3矩阵。添加第三行即可完成。
第二种可能性是构建一个额外的矩阵,在旋转之前和之后翻译图片:
T =
1 0 -cols/2
0 1 -rows/2
0 0 1
将旋转矩阵M乘以此旋转矩阵M以获得总变换-TMT(例如,使用函数gemm)并将其应用于warpPerspective。