欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > OpenCV几何图像变换(5)旋转和缩放计算函数getRotationMatrix2D()的使用

OpenCV几何图像变换(5)旋转和缩放计算函数getRotationMatrix2D()的使用

2024/10/25 17:31:44 来源:https://blog.csdn.net/jndingxin/article/details/141399481  浏览:    关键词:OpenCV几何图像变换(5)旋转和缩放计算函数getRotationMatrix2D()的使用
  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

计算二维旋转的仿射矩阵。
该函数计算以下矩阵:
[ α β ( 1 − α ) ⋅ center.x − β ⋅ center.y − β α β ⋅ center.x + ( 1 − α ) ⋅ center.y ] \begin{bmatrix} \alpha & \beta & (1- \alpha ) \cdot \texttt{center.x} - \beta \cdot \texttt{center.y} \\ - \beta & \alpha & \beta \cdot \texttt{center.x} + (1- \alpha ) \cdot \texttt{center.y} \end{bmatrix} [αββα(1α)center.xβcenter.yβcenter.x+(1α)center.y]
其中,
α = scale ⋅ cos ⁡ angle , β = scale ⋅ sin ⁡ angle \begin{array}{l} \alpha = \texttt{scale} \cdot \cos \texttt{angle} , \\ \beta = \texttt{scale} \cdot \sin \texttt{angle} \end{array} α=scalecosangle,β=scalesinangle
该变换将旋转中心映射到自身。如果不是目标,则调整平移。

getRotationMatrix2D() 函数用于计算一个 2×3 的仿射矩阵,该矩阵可以用于将图像绕着指定的中心点进行旋转和缩放。

函数原型


Mat cv::getRotationMatrix2D	
(Point2f 	center,double 	angle,double 	scale 
)		

参数

  • 参数center 旋转在源图像中的中心。
  • 参数angle 旋转角度(以度为单位)。正值表示逆时针旋转(坐标原点假定为图像的左上角)。
  • 参数scale 各向同性的缩放因子。

代码示例


#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;int main()
{// 加载图像Mat src = imread("/media/dingxin/data/study/OpenCV/sources/images/fruit_small.jpg");if (src.empty()){cout << "Error: Image not found." << endl;return -1;}// 定义旋转中心Point2f center(src.cols / 2.0f, src.rows / 2.0f);// 定义旋转角度和缩放因子double angle = 45.0; // 旋转角度double scale = 1.0;  // 缩放因子// 获取旋转矩阵Mat rotMat = getRotationMatrix2D(center, angle, scale);// 应用旋转Mat rotatedImage;warpAffine(src, rotatedImage, rotMat, src.size());// 显示原图像和旋转后的图像namedWindow("Original Image", WINDOW_NORMAL);imshow("Original Image", src);namedWindow("Rotated Image", WINDOW_NORMAL);imshow("Rotated Image", rotatedImage);// 等待按键并关闭窗口waitKey(0);destroyAllWindows();return 0;
}

运行结果

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com