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

导航网站 php/重庆高端网站seo

导航网站 php,重庆高端网站seo,wordpress国内视频网站,个人主页模板psd操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 计算两个2D点集之间的最优仿射变换 estimateRigidTransform 是 OpenCV 中的一个函数,用于估计两个点集之间的刚性变换(即…
  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

计算两个2D点集之间的最优仿射变换
estimateRigidTransform 是 OpenCV 中的一个函数,用于估计两个点集之间的刚性变换(即平移和旋转)。这个函数在计算机视觉中常用于图像配准、运动估计等任务。

该函数找到一个最优的仿射变换 [A|b](一个 2x3 的浮点矩阵),该变换最佳地逼近两个点集之间的仿射变换。

两个点集

两个栅格图像。在这种情况下,函数首先在 src 图像中找到一些特征,并在 dst 图像中找到对应的特征。之后,问题就简化为第一种情况。
在点集的情况下,问题表述如下:你需要找到一个 2x2 矩阵 A 和一个 2x1 向量 b,使得:
[ A ∗ ∣ b ∗ ] = a r g min ⁡ [ A ∣ b ] ∑ i ∥ dst [ i ] − A src [ i ] T − b ∥ 2 [A^*|b^*] = arg \min _{[A|b]} \sum _i \| \texttt{dst}[i] - A { \texttt{src}[i]}^T - b \| ^2 [Ab]=arg[Ab]minidst[i]Asrc[i]Tb2
其中 src[i] 和 dst[i] 分别是 src 和 dst 中的第 i 个点。[A|b] 可以是任意的(当 fullAffine=true 时),或者具有以下形式:
[ a 11 a 12 b 1 − a 12 a 11 b 2 ] \begin{bmatrix} a_{11} & a_{12} & b_1 \\ -a_{12} & a_{11} & b_2 \end{bmatrix} [a11a12a12a11b1b2]
当 fullAffine=false 时。

函数原型

Mat cv::estimateRigidTransform	
(InputArray 	src,InputArray 	dst,bool 	fullAffine 
)		

参数

  • 参数src:第一个输入的2D点集,存储在 std::vector 或 Mat 中,或存储在 Mat 中的图像。
  • 参数dst:第二个输入的2D点集,与 src 大小和类型相同,或另一个图像。
  • 参数fullAffine:如果为 true,函数将寻找一个没有额外限制的最优仿射变换(6个自由度)。否则,可选择的变换类别仅限于平移、旋转和均匀缩放的组合(4个自由度)

代码示例


#include <iostream>
#include <opencv2/opencv.hpp>using namespace cv;
using namespace std;int main()
{// 创建源图像Mat src_image = Mat::zeros( 300, 300, CV_8UC3 );rectangle( src_image, Point( 50, 50 ), Point( 150, 150 ), Scalar( 255, 0, 0 ), -1 );circle( src_image, Point( 200, 200 ), 50, Scalar( 0, 255, 0 ), -1 );// 创建目标图像Mat dst_image = Mat::zeros( 300, 300, CV_8UC3 );Mat M         = getRotationMatrix2D( Point( 150, 150 ), 45, 1.0 );  // 旋转45度M.at< double >( 0, 2 ) += 50;                                       // 平移50个像素M.at< double >( 1, 2 ) += 50;                                       // 平移50个像素warpAffine( src_image, dst_image, M, dst_image.size() );// 显示生成的图像imshow( "Source Image", src_image );imshow( "Destination Image", dst_image );// 提取特征点vector< Point2f > src_points = { { 50, 50 }, { 150, 50 }, { 50, 150 }, { 200, 200 } };vector< Point2f > dst_points = { { 100, 100 }, { 200, 100 }, { 100, 200 }, { 250, 250 } };// 估计刚性变换矩阵Mat rigid_transform = estimateRigidTransform( src_points, dst_points, false );if ( rigid_transform.empty() ){cerr << "Error: Could not estimate rigid transform." << endl;return -1;}// 输出变换矩阵cout << "Rigid Transform Matrix:\n" << rigid_transform << endl;// 应用变换Mat transformed_image;warpAffine( src_image, transformed_image, rigid_transform, dst_image.size() );// 显示结果imshow( "Transformed Image", transformed_image );waitKey( 0 );return 0;
}

运行结果

在这里插入图片描述

相关文章:

OpenCV视觉分析之目标跟踪(10)估计两个点集之间的刚性变换函数estimateRigidTransform的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 计算两个2D点集之间的最优仿射变换 estimateRigidTransform 是 OpenCV 中的一个函数&#xff0c;用于估计两个点集之间的刚性变换&#xff08;即…...

Python 虚拟环境创建

1. 创建python虚拟环境 conda create -n env_name pythonversionex:conda create -n train_ticket_venv python3.112. 查看安装包信息 pip show package_nameex: pip show numpy3. 用清华源安装软件包 pip install package_name -i https://mirrors.tuna.tsinghua.edu.cn/pyp…...

STL-list容器的使用

在C标准库中&#xff0c;std::list 是一个双向链表容器&#xff0c;提供高效的插入和删除操作&#xff0c;尤其适用于需要频繁在容器中间进行插入和删除元素的场景。与其他序列容器&#xff08;如 std::vector 和 std::deque&#xff09;相比&#xff0c;std::list 有其独特的优…...

java中线程与集合的面试题

在 Java 面试中&#xff0c;线程和集合相关的知识是非常常见的考察点。以下是几个典型的问题及答案&#xff1a; 线程相关面试题 什么是线程&#xff1f; 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中&#xff0c;是进程中的实际运作单位。一个进程可以有多…...

第十五章 IRIS 进程之间的通信

文章目录 第十五章 IRIS 进程之间的通信介绍指定作业间通信设备的内存缓冲区禁用作业间通信缓冲区 作业间通信设备编号设备编号 IJC 设备的 I/O 命令OPEN命令device 设备timeout 暂停 第十五章 IRIS 进程之间的通信 本页介绍如何在两个或多个 IRIS 数据平台进程之间建立通信。…...

设计者模式之策略模式

前言 在软件构建过程中&#xff0c;某些对象使用的算法可能多种多样&#xff0c;经常改变&#xff0c;如果将这些算法都写在对象中&#xff0c;将会使对象变得异常复杂&#xff1b;而且有时候支持不频繁使用的算法也是一个性能负担。 如何在运行时根据需要透明地更改对象的算…...

STM32H750 COMP模拟比较器

STM32H750 COMP模拟比较器 &#x1f516;STM32H750内置两个超低功耗比较器通道&#xff08;COMP1 和 COMP2&#xff09;. &#x1f4c4;功能应用&#xff1a; 在模拟信号的触发下从低功耗模式唤醒模拟信号调理与定时器的 PWM 输出结合使用时&#xff0c;构成逐周期电流控制环路…...

openresty入门教程:rewrite_by_lua_block

在OpenResty中&#xff0c;rewrite_by_lua_block 是一个强大的工具&#xff0c;它允许你在Nginx的rewrite阶段执行Lua脚本。这个阶段在Nginx处理请求的早期发生&#xff0c;通常用于修改请求URI、请求参数、请求头等&#xff0c;或者根据某些条件执行重定向、返回特定响应等。 …...

Java 并发编程学习笔记

参考资料&#xff1a; JAVA并发专题 - 终有救赎的专栏 - 掘金 Java并发编程学习路线&#xff08;建议收藏&#xfffd;&#xfffd;&#xff09; | Java程序员进阶之路x沉默王二 面试题目&#xff1a; JUC第一讲&#xff1a;Java并发知识体系详解 面试题汇总(P6熟练 P7精通…...

【SpringMVC】——Cookie和Session机制

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 一&#xff1a;实践 1&#xff1a;获取URL中的参数 &#xff08;1&#xff09;PathVariable 2&…...

[产品管理-60]:产品的情感化设计与常用工具:感性工学、情感分析、神经网络法、微软反应卡、突发情绪法

目录 一、概述 1、情感化设计的三个层次 2、情感化设计在产品中的应用 3、情感化设计的案例 4、情感化设计的意义 二、常见工具 1、感性工学 &#xff08;情商&#xff09; 2、情感分析 3、神经网络法 4、微软反应卡 5、突发情绪法 一、概述 产品的情感化设计是一种…...

uniapp 小程序 周选择器

这里贴出来的是子组件的代码&#xff0c;父组件只是打开了一下popup // 打开了一下popup $refs.popup.open(bottom)如果不想用子组件的话&#xff0c;直接打开popup就可以用<template><uni-popup ref"popup" type"bottom" background-color&quo…...

Android笔记(三十二):封装一个毫秒级别倒计时View

效果 倒计时View视频 背景 业务场景需要显示带有毫秒级别的倒计时&#xff0c;于是自己封装一个通用的倒计时组件 源码分析 核心倒计时逻辑&#xff0c;主要是每隔100毫秒计算一次从开始倒计时到现在的剩余时间&#xff0c;并通过process接口返回出去Handler每次设置100毫秒…...

[产品管理-60]:马斯洛需求层次与产品的情感化设计

目录 一、概述 1、马斯洛需求层次理论概述 2、产品情感化设计与马斯洛需求层次的关系 3、产品情感化设计的实践案例 二、马斯洛需求层次与用户情感程度&#xff08;本能、行为、反思&#xff09;的关系 1、马斯洛需求层次与用户情感程度概述 2、马斯洛需求层次与用户情感…...

Python接口自动化测试自学指南(项目实战)

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 接口自动化测试是指通过编写程序来模拟用户的行为&#xff0c;对接口进行自动化测试。Python是一种流行的编程语言&#xff0c;它在接口自动化测试中得到了广…...

ESLint 使用教程(三):12个ESLint 配置项功能与使用方式详解

前言 在现代前端开发中&#xff0c;代码质量与一致性是至关重要的&#xff0c;ESLint 正是为此而生的一款强大工具&#xff0c;本文将带您详细了解 ESLint 的配置文件&#xff0c;并通过通俗易懂的方式讲解其主要配置项及其配置方法。此外&#xff0c;我们还将探讨一些高级配置…...

如何将 EDB 文件导入 Ansys HFSS 和 Ansys Q3D

EDB 文件包含有关印刷电路板 &#xff08;PCB&#xff09; 的基本数据&#xff0c;包括其布局、组件、连接性和电磁属性。将 EDB 文件导入 Ansys 工具是利用仿真和分析功能设计高效、可靠和高性能电子系统的关键步骤。在这里&#xff0c;我将向您展示如何将 EDB 文件导入 Ansys…...

HbuildderX运行到手机或模拟器的Android App基座识别不到设备 mac

寻找模拟器 背景&#xff1a; 运行的是h5&#xff0c;模拟器是网易MuMu。 首先检查一下是否配置dab环境&#xff0c;adb version 配置一下hbuilderX的adb&#xff1a; 将命令输出的路径配置到hbuilderx里面去&#xff0c;然后重启下HbuilderX。 开始安装基座…一直安装不…...

智慧流控 力行天地 | 同元软控受邀参加第十三届全国流体传动与控制学术会议

2024年10月27日-30日&#xff0c;由中国机械工程学会流体传动与控制分会主办的第十三届全国流体传动与控制学术会议在秦皇岛召开。大会以“智慧流控 力行天地”为主题&#xff0c;来自全国高校、科研院所及企事业单位的专家学者出席本次会议。 大会围绕工程应用、新型流控元件、…...

Python日志分析与故障定位

Python日志分析与故障定位 目录 &#x1f4ca; 分布式系统日志分析&#xff1a;ELK Stack与Fluentd⚡ 实时日志流处理与异常检测&#x1f40d; 使用Python分析并处理海量日志数据&#x1f6a8; 自动化故障检测与报警系统&#x1f50d; 故障根因分析&#xff08;Root Cause An…...

w029基于springboot的网上购物商城系统研发

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0…...

Uniapp全局文件执行顺序详解

Uniapp全局文件执行顺序详解 在Uni-App项目中&#xff0c;全局文件的执行顺序对于深入理解应用的启动和初始化流程至关重要。本文将详细阐述这些文件的执行顺序&#xff0c;并提供相应的示例代码&#xff0c;以便开发者更好地理解和应用。 1. index.html 文件描述&#xff1…...

车企死亡加速,买车看好这三条线

文 | AUTO芯球 作者 | 雷慢 真不是我危言耸听&#xff0c; 新能源车是真不能随便买啊&#xff0c; 就在这几天&#xff0c;哪吒被传出要裁员70%&#xff0c; 多少车主&#xff0c;多少员工和家庭要失眠了&#xff0c; 哪吒也回应了&#xff0c;说没有裁员&#xff0c;只是精…...

SpringClud一站式学习之Eureka服务治理(二)

SpringClud一站式学习之Eureka服务治理 引言1. 搭建Eureka Server1.1. 添加Eureka Server依赖1.2. 添加 Eureka Server注解1.3. 配置Eureka Server1.4. 运行Eureka Server 2. 搭建Eureka Client 服务提供者2.1. 添加依赖2.2. 添加注解2.3. 配置Eureka Client2.4. 启动服务 3. 搭…...

空间解析几何【上】

文章目录 两向量共线&三向量共面线段定比分点内积&外积&混合积内积(点积)外积(叉积)几何性质混合积轮换对称性对换改变一次符号线性性质几何性质球面方程特点空间平面参数方程行列式方程(点位式)向量式方程三点式方程行列式方程点法式一般式截距式法式方程离…...

Python 获取PDF的各种页面信息(页数、页面尺寸、旋转角度、页面方向等)

目录 安装所需库 Python获取PDF页数 Python获取PDF页面尺寸 Python获取PDF页面旋转角度 Python获取PDF页面方向 Python获取PDF页面标签 Python获取PDF页面边框信息 了解PDF页面信息对于有效处理、编辑和管理PDF文件至关重要。PDF文件通常包含多个页面&#xff0c;每个页…...

独孤思维:曾经副业赚大钱的人,怎么不见了

01 总有一双眼睛默默关注你。 别以为自己每天做项目&#xff0c;日更文章&#xff0c;没人看。 总会有人默默观察你。 看你能坚持多久&#xff0c;看多段时间&#xff0c;你是不是还在。 今天上午&#xff0c;有个2年前认识的副业同行&#xff0c;今天突然跟我发消息。 说…...

OpenGL 异常处理-glCreateShader失败

【1】glCreateShader创建顶点着色器时候报错&#xff0c;如下 【2】原因分析 初始化失败&#xff0c;你使用一个扩extension loader library来访问现代OpenGL&#xff0c;当需要初始化它时&#xff0c;加载器需要一个当前的上下文来加载 【3】解决办法 GLenum glew_err gle…...

【el-pagination的使用及修改分页组件的整体大小修改默认样式的宽度详细教程】

今天遇到个bug&#xff0c;使用element-puls中的分页的时候&#xff0c;长度会超出盒子&#xff0c;今天教大家如何修改el-pagination的宽度&#xff0c;以及修改分页组件的整体大小 直接修改 style"width: 100%; margin-top: 10px"不生效 控制台修改el-pagination…...

Uniapp的学习

uniapp的内容和vue网页开发会有很多区别&#xff0c;但是都是基于vue开发的&#xff0c;大多数业务还是在vue打交道&#xff0c;但是这些uniapp的特殊的知识点也是要掌握好的。 基本配置 创建uniapp项目 npx degit dcloudio/uni-preset-vue#vite-ts 项目名 &#xff1a;用于…...