资讯详情

OpenCV每日函数 几何图像变换模块 (5) getRotationMatrix2D函数

一、概述

getRotationMatrix2D二维旋转仿射矩阵的函数计算。

该函数计算以下矩阵:

其中scale是缩放比,angle旋转角度。

使用getRotationMatrix2D,我们可以指定图像将其旋转的中心点作为第一个参数,然后是旋转角度度为单位),最后是图像的缩放因子。这里,angle 逆时针旋转角度。

二、getRotationMatrix2D函数

1、函数原型

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

2、参数详解

center 旋转中心在源图像中。
angle 旋转角度以度为单位。 逆时针旋转(假设坐标原点为左上角)。
scale 各向同性比例因素。

三、OpenCV源码

1、源码路径

include\opencv2\imgproc.hpp opencv\modules\imgproc\src\imgwarp.cpp

2、源码代码

inline Mat getRotationMatrix2D(Point2f center, double angle, double scale) {     return Mat(getRotationMatrix2D_(center, angle, scale), true); }
cv::Matx23d cv::getRotationMatrix2D_(Point2f center, double angle, double scale) {     CV_INSTRUMENT_REGION();      angle *= CV_PI/180;     double alpha = std::cos(angle)*scale;     double beta = std::sin(angle)*scale;      Matx23d M(         alpha, beta, (1-alpha)*center.x - beta*center.y,         -beta, alpha, beta*center.x   (1-alpha)*center.y     );     return M; }

四、效果图像示例

c# opencvsharp简单参考代码如下。

float angle = float.Parse(this.textBox1.Text); float scale = float.Parse(this.textBox2.Text); int x = int.Parse(this.textBox4.Text); int y = int.Parse(this.textBox3.Text);  Mat res = new Mat(); Mat m = Cv2.GetRotationMatrix2D(new Point2f(x,y), angle, scale); Cv2.WarpAffine(src, res, m, src.Size());
原图

下图为以点(100, 100)为中心,旋转角度为40度,缩放比为1(即未缩放)得到的结果图。

角度40,缩放比1,旋转中心点坐标100,100

标签: 继电器rs1a23d25

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台