Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 在OpenCV中围绕图像中心旋转、缩放和平移_Image Processing_Opencv - Fatal编程技术网

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相乘并不意味着,只对最后一列求反。