C语言旋转任意角度图片代码
时间: 2023-05-25 21:05:31 浏览: 456
由于C语言没有直接支持图像处理的库,因此要旋转图片需要借助第三方库,如OpenCV。以下代码基于OpenCV库,实现了任意角度旋转图片。
```c
#include <opencv2/opencv.hpp>
using namespace cv;
Mat rotateImage(Mat& src, float angle)
{
//计算旋转矩阵
cv::Point2f center(src.cols / 2.0, src.rows / 2.0);
cv::Mat rot = cv::getRotationMatrix2D(center, angle, 1.0);
//计算新图片的大小
cv::Rect bbox = cv::RotatedRect(center, src.size(), angle).boundingRect();
//将旋转矩阵应用于原图像
rot.at<double>(0, 2) += bbox.width / 2.0 - center.x;
rot.at<double>(1, 2) += bbox.height / 2.0 - center.y;
cv::Mat dst;
cv::warpAffine(src, dst, rot, bbox.size());
return dst;
}
int main()
{
Mat src = imread("test.jpg"); // 读入原始图像
Mat dst = rotateImage(src, 45); //旋转45度
imwrite("test-rotated.jpg", dst); //保存旋转后的图片
return 0;
}
```
以上代码中,`imread`函数用于读取原始图片,`rotateImage`函数用于将原始图片旋转指定角度,`imwrite`函数用于保存旋转后的图片。其中,`getRotationMatrix2D`函数用于求解旋转矩阵,`RotatedRect`函数用于计算旋转后的图片大小,`warpAffine`函数用于将旋转矩阵应用于原图像。
阅读全文