当前位置: 首页 > article >正文

【opencv】几何变换——仿射变换(4 计算仿射矩阵)

4 计算仿射矩阵

  • 对于空间变换的仿射矩阵有两种计算方式:

4.1方程法getAffineTransform()

  • 仿射变换矩阵有六个未知数,需要三组对应位置坐标,构造出由六个方程组成的方程组即可解六个未知数;
  • 函数getAffineTransform();通过方程法计算参数src到dst的对应仿射变换矩阵;
  • 头文件:#include<opencv2/imgproc.hpp>
  • 函数getAffineTransform()输入参数有两种方式:

4.1.1 Point2f数组

  • 数据类型为:CV_64F
#include <opencv2/core/core.hpp>  
#include<opencv2/highgui/highgui.hpp>
#include<iostream>
#include<opencv2/imgproc.hpp>
using namespace std;
using namespace cv;
int main() {
    //原坐标位置
    Point2f src[] = { Point2f(0,0),Point2f(200,0),Point2f(0,200) };
    //经过某仿射变换后的坐标
    Point2f dst[] = { Point2f(0,0),Point2f(200,0),Point2f(0,200) };
    //计算仿射矩阵
    Mat A = getAffineTransform(src, dst);
    cout << A << endl;
}

4.1.2Mat

  • 数据类型:CV_32F
#include <opencv2/core/core.hpp>  
#include<opencv2/highgui/highgui.hpp>
#include<iostream>
#include<opencv2/imgproc.hpp>
using namespace std;
using namespace cv;
int main() {
    //原坐标位置
    Mat src = (Mat_<float>(3,2)<<0,0,200,0,0,200);
    //经过某仿射变换后的坐标
    Mat dst = (Mat_<float>(3, 2) << 0, 0, 100, 0, 0, 100);
    //计算仿射矩阵
    Mat A = getAffineTransform(src, dst);
    cout << A << endl;
}

http://www.kler.cn/a/15322.html

相关文章:

  • MyBatis-Plus中使用JSON 类型字段
  • 数据科学与SQL:如何计算排列熵?| 基于SQL实现
  • ReactPress与WordPress:一场内容管理系统的较量
  • 热点更新场景,OceanBase如何实现性能优化
  • 【C++滑动窗口】1248. 统计「优美子数组」|1623
  • 2020年计挑赛往届真题(C++)
  • 【具体到每一步】uniapp打包app生成apk包
  • MySql数据库的初步安装与数据表结构数据管理
  • 进程与线程:同步和互斥
  • WiFi电子标签简介
  • 关于GeoServer发布服务时数据源设置的避坑指南
  • 如何本地mySQL迁移到另一台电脑上?
  • 【Linux基本指令和权限(1)】
  • 【VM服务管家】VM4.0软件使用_1.4 通讯类
  • 【五一创作】 SAAS-HRM系统概述与搭建环境
  • Qt音视频开发42-网络推流(视频推流/本地摄像头推流/桌面推流/网络摄像头转发推流等)
  • 数学建模第五天:数学建模算法篇之层次分析法AHP
  • 随机过程 Brown 运动(上)
  • 新一代边缘计算盒子,英码科技边缘计算盒子SY-E160
  • 多通道振弦传感器无线采集仪 多类型数字传感器独立发送协议
  • C语言函数大全-- n 开头的函数
  • OSCP-Escape(gif绕过)
  • Nacos注册中心的使用
  • Android studio 使用入门
  • Leetcode171. Excel 表列序号
  • ChatGpt 能取代人类吗?