2013-02-04 80 views
0

我真的很希望这不会浪费任何人的时间,但我遇到了一个小问题。我能够使用构造变换矩阵如下:在OpenCV中围绕图像中心进行旋转,缩放和平移

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)旋转。如何将中心点旋转移入矩阵?

+0

http://stackoverflow.com/questions/4279008/specify-an-origin-to-warpperspective-function-in-opencv-2-x –

回答

1

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

第二种可能性是构建之前和旋转之后平移图像的附加基质:

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

乘法您的旋转矩阵M与这一个,以获得总变换-tmt(例如用功能GEMM )并将其应用于warpPerspective。

+0

通过-T简单乘以-1并不意味着,只有最后一列被否定。 – YuZ