通过getRotationMatrix2D创建变换矩阵,使用warpAffine加速算子C++例程
时间: 2024-01-02 22:02:22 浏览: 85
以下是使用 OpenCV 中的 getRotationMatrix2D 和 warpAffine 函数进行图像旋转的 C++ 代码示例:
```cpp
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
// 读取图像
Mat img = imread("input.jpg");
// 定义旋转中心和旋转角度
Point2f center(img.cols/2, img.rows/2);
double angle = 45;
// 计算变换矩阵
Mat rot = getRotationMatrix2D(center, angle, 1.0);
// 应用变换矩阵
Mat result;
warpAffine(img, result, rot, Size(img.cols, img.rows));
// 显示结果
imshow("Original Image", img);
imshow("Rotated Image", result);
waitKey();
return 0;
}
```
在此示例中,我们首先使用 `imread` 函数读取输入图像。然后,我们定义旋转中心为图像中心,并指定旋转角度为 45 度。
接下来,我们使用 `getRotationMatrix2D` 函数计算变换矩阵,这个函数需要三个参数:旋转中心、旋转角度和缩放因子。这个函数返回一个 2x3 的变换矩阵,用于将图像旋转。
最后,我们使用 `warpAffine` 函数应用变换矩阵,并将结果保存到 `result` 中。这个函数需要四个参数:输入图像、输出图像、变换矩阵和输出图像的大小。
最后,我们使用 `imshow` 函数显示原始图像和旋转后的图像,并使用 `waitKey` 函数等待用户按下任意键。
阅读全文