使用C++对图像进行旋转
时间: 2024-10-28 22:12:59 浏览: 8
在C++中,特别是使用OpenCV库对图像进行旋转,通常会涉及到图像矩阵的运算。以下是一个简单的例子,展示了如何顺时针旋转图像:
首先,你需要包含OpenCV的头文件并初始化一个Mat对象来存储图像数据:
```cpp
#include <opencv2/opencv.hpp>
cv::Mat img;
```
然后,读取图像到Mat对象中:
```cpp
if (!cv::imread("input.jpg", img)) {
std::cerr << "Error reading image" << std::endl;
return;
}
```
接下来,你可以通过计算仿射变换矩阵来旋转图像。例如,想要逆时针旋转90度,可以这样做:
```cpp
cv::Point2f srcCenter(img.cols / 2.0, img.rows / 2.0);
cv::Point2f dstCenter(img.rows / 2.0, 0);
float angleInDegrees = -90;
// 旋转矩阵,原点在图像中心,逆时针旋转
cv::Mat rotationMatrix = cv::getRotationMatrix2D(srcCenter, angleInDegrees, 1);
// 计算新图像大小
cv::Size newSize = img.size();
newSize.height = img.cols;
newSize.width = img.rows;
// 进行旋转
cv::Mat rotated;
cv::warpAffine(img, rotated, rotationMatrix, newSize);
```
最后,你可以将旋转后的图像保存:
```cpp
cv::imwrite("output.jpg", rotated);
```
阅读全文