OpenCV-图像旋转Rotate

OpenCV-图像旋转Rotate实现图像旋转函数 Rotate

功能函数

// 图像旋转 void Rotate(const cv::Mat &srcImage, cv::Mat &dstImage, double angle, cv::Point2f center, double scale) { cv::Mat M = cv::getRotationMatrix2D(center, angle, scale);//计算旋转的仿射变换矩阵 cv::warpAffine(srcImage, dstImage, M, cv::Size(srcImage.cols, srcImage.rows));//仿射变换 }

 getRotationMatrix2D函数原型

       getRotationMatrix2D用来获得旋转的仿射变换矩阵。

Mat getRotationMatrix2D(Point2f center, double angle, double scale);

getRotationMatrix2D参数说明

  1. Point2f类型的center,旋转中心。
  2. double类型的angle,逆时针旋转的角度。
  3. double类型的scale,图像旋转后的尺寸比例。

warpAffine函数原型

       warpAffine用来仿射变换。

void warpAffine( InputArray src, OutputArray dst, InputArray M, Size dsize, int flags = INTER_LINEAR, int borderMode = BORDER_CONSTANT, const Scalar& borderValue = Scalar());

warpAffine参数说明

  1. InputArray类型的src,输入图像。
  2. OutputArray类型的dst,输出图像。
  3. InputArray类型的M,仿射变换矩阵。
  4. Size类型的dsize,输出图像的大小。
  5. int类型的flags,插值方法。
  6. int类型的borderMode,边界填充方法。
  7. const Scalar&类型的borderValue,边界填充数值。

C++测试代码

#include 
  
    #include 
   
     using namespace std; using namespace cv; // 图像旋转 void Rotate(const cv::Mat &srcImage, cv::Mat &dstImage, double angle, cv::Point2f center, double scale) { cv::Mat M = cv::getRotationMatrix2D(center, angle, scale);//计算旋转的仿射变换矩阵 cv::warpAffine(srcImage, dstImage, M, cv::Size(srcImage.cols, srcImage.rows));//仿射变换 } int main() { // 载入图像 cv::Mat src = imread("0.jpg"); cv::Mat dst; // 定义参数 int row = src.rows; int col = src.cols; double angle = 30; cv::Point2f center(col / 2, row / 2); double scale = 0.5; // 图像旋转 Rotate(src, dst, angle, center, scale); // 显示图像 imshow("src", src); imshow("result", dst); waitKey(0); system("pause"); return 0; } 
    
  

测试效果

OpenCV-图像旋转Rotate
图1 原图

OpenCV-图像旋转Rotate
图2 旋转30°

OpenCV-图像旋转Rotate
图3 原图大小旋转45°

       不难看出,旋转后原图的尺寸已经无法满足图像要求了,此时可以缩小比例,也可以扩展整图尺寸使其完全覆盖。 

       如果函数有什么可以改进完善的地方,非常欢迎大家指出,一同进步何乐而不为呢~

       如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/228360.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午7:12
下一篇 2026年3月16日 下午7:13


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号