OpenCV几何图像变换(5)旋转和缩放计算函数getRotationMatrix2D()的使用

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

计算二维旋转的仿射矩阵。

该函数计算以下矩阵:

α β ( 1 − α ) ⋅ center.x − β ⋅ center.y − β α β ⋅ center.x + ( 1 − α ) ⋅ center.y \] \\begin{bmatrix} \\alpha \& \\beta \& (1- \\alpha ) \\cdot \\texttt{center.x} - \\beta \\cdot \\texttt{center.y} \\\\ - \\beta \& \\alpha \& \\beta \\cdot \\texttt{center.x} + (1- \\alpha ) \\cdot \\texttt{center.y} \\end{bmatrix} \[α−ββα(1−α)⋅center.x−β⋅center.yβ⋅center.x+(1−α)⋅center.y

其中,
α = scale ⋅ cos ⁡ angle , β = scale ⋅ sin ⁡ angle \begin{array}{l} \alpha = \texttt{scale} \cdot \cos \texttt{angle} , \\ \beta = \texttt{scale} \cdot \sin \texttt{angle} \end{array} α=scale⋅cosangle,β=scale⋅sinangle

该变换将旋转中心映射到自身。如果不是目标,则调整平移。

getRotationMatrix2D() 函数用于计算一个 2×3 的仿射矩阵,该矩阵可以用于将图像绕着指定的中心点进行旋转和缩放。

函数原型

cpp 复制代码
Mat cv::getRotationMatrix2D	
(
	Point2f 	center,
	double 	angle,
	double 	scale 
)		

参数

  • 参数center 旋转在源图像中的中心。
  • 参数angle 旋转角度(以度为单位)。正值表示逆时针旋转(坐标原点假定为图像的左上角)。
  • 参数scale 各向同性的缩放因子。

代码示例

cpp 复制代码
#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main()
{
    // 加载图像
    Mat src = imread("/media/dingxin/data/study/OpenCV/sources/images/fruit_small.jpg");
    if (src.empty())
    {
        cout << "Error: Image not found." << endl;
        return -1;
    }

    // 定义旋转中心
    Point2f center(src.cols / 2.0f, src.rows / 2.0f);

    // 定义旋转角度和缩放因子
    double angle = 45.0; // 旋转角度
    double scale = 1.0;  // 缩放因子

    // 获取旋转矩阵
    Mat rotMat = getRotationMatrix2D(center, angle, scale);

    // 应用旋转
    Mat rotatedImage;
    warpAffine(src, rotatedImage, rotMat, src.size());

    // 显示原图像和旋转后的图像
    namedWindow("Original Image", WINDOW_NORMAL);
    imshow("Original Image", src);

    namedWindow("Rotated Image", WINDOW_NORMAL);
    imshow("Rotated Image", rotatedImage);

    // 等待按键并关闭窗口
    waitKey(0);
    destroyAllWindows();

    return 0;
}

运行结果

相关推荐
Slow菜鸟2 小时前
AI学习篇(三) | AI效率工具指南(2026年)
人工智能·学习
北京软秦科技有限公司3 小时前
AI审核如何助力合规取证?IACheck打造环境检测报告电子存证与法律风险防控新路径
大数据·人工智能
qq_359716233 小时前
openpi使用过程中相关问题
人工智能·深度学习·机器学习
minhuan3 小时前
医疗AI智能体:从数据到关怀人文设计:告别冰冷精准,构建有温度的诊疗交互.131
人工智能·ai智能体·智能体的人文设计·医疗ai人文设计·构建医疗ai智能体
Promise微笑4 小时前
驾驭AI引用:Geo优化中的内容评分机制与实战策略深度解析
人工智能
ai生成式引擎优化技术5 小时前
全球唯一四元结构底层架构问世:TSPR-WEB-LLM-HIC v2.0 终结大模型投毒与幻觉的终极技术范式
人工智能
听你说325 小时前
伊萨推出 ROBBI 360 协作机器人焊接工作站 简化自动化焊接部署流程
人工智能·机器人·自动化
weixin_408099675 小时前
【实战对比】在线 OCR 识别 vs OCR API 接口:从个人工具到系统集成该怎么选?
图像处理·人工智能·后端·ocr·api·图片文字识别·文字识别ocr
罗西的思考5 小时前
【OpenClaw】通过Nanobot源码学习架构---(2)外层控制逻辑
人工智能·机器学习