通过getRotationMatrix2D创建变换矩阵,使用warpAffine WARP_INVERSE_MAP加速算子C++例程
时间: 2024-01-14 20:04:51 浏览: 137
下面是一个使用getRotationMatrix2D创建变换矩阵并使用warpAffine函数进行图像旋转的C ++例程。在这个例子中,我们将使用WARP_INVERSE_MAP参数来加速算子。
```cpp
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
// 读入图像
Mat src = imread("input.jpg");
// 设置旋转中心和角度
Point2f center(src.cols / 2.0, src.rows / 2.0);
double angle = 45;
// 获取旋转矩阵
Mat rotMat = getRotationMatrix2D(center, angle, 1.0);
// 进行仿射变换
Mat dst;
warpAffine(src, dst, rotMat, src.size(), WARP_INVERSE_MAP);
// 显示结果
imshow("src", src);
imshow("dst", dst);
waitKey();
return 0;
}
```
在这个例子中,我们首先读入了一张图像。然后,我们定义了旋转中心和角度,并使用getRotationMatrix2D函数获取旋转矩阵。接下来,我们使用warpAffine函数进行图像旋转,并将结果保存在dst中。最后,我们使用imshow函数显示原始图像和旋转后的图像,并等待用户按下任意按键以退出程序。
需要注意的是,在warpAffine函数中,我们使用了WARP_INVERSE_MAP参数来加速算子。这个参数告诉OpenCV使用逆变换来计算输出图像像素值,从而避免了对每个像素进行映射的计算。这个参数只能用于仿射变换,而不能用于其他类型的变换。
阅读全文