c++使用opencv使图像旋转任意角度
时间: 2024-09-13 07:13:32 浏览: 29
在C++中使用OpenCV库使图像旋转任意角度,可以通过以下步骤实现:
1. 计算旋转矩阵:使用`cv::getRotationMatrix2D`函数计算图像旋转指定角度后的旋转矩阵。这个函数需要三个参数:图像中心点坐标、旋转角度和缩放因子。
2. 应用旋转矩阵:使用`cv::warpAffine`函数应用上一步得到的旋转矩阵来旋转图像。`warpAffine`函数需要原图像、旋转矩阵以及输出图像的尺寸作为参数。
下面是一个示例代码:
```cpp
#include <opencv2/opencv.hpp>
int main() {
// 加载原始图像
cv::Mat src = cv::imread("path_to_image.jpg");
if (src.empty()) {
std::cerr << "Error loading image." << std::endl;
return -1;
}
// 图像中心点
cv::Point2f center(src.cols / 2.0F, src.rows / 2.0F);
// 旋转角度
double angle = 30.0; // 旋转30度
// 缩放因子,1.0表示不缩放
double scale = 1.0;
// 计算旋转矩阵
cv::Mat rot = cv::getRotationMatrix2D(center, angle, scale);
// 存储旋转后的图像
cv::Mat dst;
// 应用旋转矩阵
cv::warpAffine(src, dst, rot, src.size());
// 显示图像
cv::imshow("Rotated Image", dst);
// 等待按键
cv::waitKey(0);
return 0;
}
```
在这段代码中,首先包含了OpenCV的头文件,并在`main`函数中加载了图像。然后计算了旋转矩阵,并将其应用到原图上以获取旋转后的图像。最后显示了旋转后的图像。