【问题标题】:Rotate, Scale and Translate around image centre in OpenCV在 OpenCV 中围绕图像中心旋转、缩放和平移
【发布时间】:2013-02-04 09:12:41
【问题描述】:

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

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)旋转。如何将中心点旋转合并到这个矩阵中?

【问题讨论】:

标签: image-processing opencv


【解决方案1】:

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

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

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

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

【讨论】:

  • -T 并不意味着与-1 的简单乘法,只有最后一列被否定。
猜你喜欢
  • 2013-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-19
  • 2011-07-08
  • 2020-05-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多