c++, open cv,图像旋转90度
时间: 2024-09-25 12:19:28 浏览: 95
Visual C++数字图像处理技术详解.zip
在C++中,尤其是使用OpenCV库进行计算机视觉处理时,图像旋转90度是一个常见的操作。OpenCV提供了一个叫做`cv::rotate()`的函数来实现这一功能。这个函数接受一个输入图像矩阵、一个旋转角度以及旋转后的图像存放位置作为参数。
下面是一个简单的例子来说明如何用OpenCV将图像顺时针旋转90度:
```cpp
#include <opencv2/opencv.hpp>
cv::Mat rotateImage(const cv::Mat& src, int angle) {
// 获取输入图像的维度信息
int rows = src.rows;
int cols = src.cols;
// 计算新图像的宽度和高度,因为旋转后宽高会互换
int new_cols = rows;
int new_rows = cols;
// 创建一个新矩阵来存储旋转后的图像
cv::Mat rotated(new_rows, new_cols, src.type(), cv::Scalar(0));
// 使用仿射变换来实现旋转
cv::Point2f center(cols / 2.0f, rows / 2.0f);
cv::Mat rotationMatrix = getRotationMatrix2D(center, angle, 1.0);
cv::warpAffine(src, rotated, rotationMatrix, rotated.size());
return rotated;
}
// 调用函数并旋转90度
cv::Mat src_image; // 假设已经读取了源图像
cv::Mat rotated_image = rotateImage(src_image, 90);
```
在这个例子中,`getRotationMatrix2D()`函数用于生成旋转矩阵,然后`warpAffine()`函数应用该矩阵对图像进行旋转。
阅读全文