Image processing 在OpenCV中围绕图像中心旋转、缩放和平移
我真的希望这不会浪费任何人的时间,但我遇到了一个小问题。我能够使用以下方法构造转换矩阵:Image processing 在OpenCV中围绕图像中心旋转、缩放和平移,image-processing,opencv,Image Processing,Opencv,我真的希望这不会浪费任何人的时间,但我遇到了一个小问题。我能够使用以下方法构造转换矩阵: M = s*cos(theta) -s*sin(theta) t_x s*sin(theta) s*cos(theta) t_y 0 0 1 如果我为θ、s(scale)和tx/ty提供了正确的值,然后将此矩阵用作cv::Perspective的一个参数,那么这是可行的。问题在于
M =
s*cos(theta) -s*sin(theta) t_x
s*sin(theta) s*cos(theta) t_y
0 0 1
如果我为θ、s(scale)和tx/ty提供了正确的值,然后将此矩阵用作cv::Perspective的一个参数,那么这是可行的。问题在于这个矩阵围绕(0,0)像素旋转,而我希望它围绕中心像素旋转(cols/2,rows/2)。如何将中心点旋转合并到该矩阵中 有两种可能性。第一个是使用函数getRotationMatrix2D,它将旋转中心作为参数,并为您提供一个2x3矩阵。添加第三行,就完成了 第二种可能性是构造一个附加矩阵,在旋转前后平移图片:
T =
1 0 -cols/2
0 1 -rows/2
0 0 1
将旋转矩阵M与此矩阵相乘,得到总变换-TMT(例如,使用函数gemm),并将此矩阵与warpPerspective相乘。By-T简单地与-1相乘并不意味着,只对最后一列求反。