OpenCV旋转估计(2)用于自动检测波浪校正类型的函数autoDetectWaveCorrectKind()

devtools/2025/3/26 0:01:06/
  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

cv::detail::autoDetectWaveCorrectKind 是 OpenCV 中用于自动检测波浪校正类型的函数,它根据输入的旋转矩阵集合来决定使用哪种波浪校正模式。波浪校正(Wave Correction)是图像拼接过程中的一部分,主要用于纠正由于相机在拍摄多张图片时轻微移动导致的图像拼接误差。

函数原型

WaveCorrectKind cv::detail::autoDetectWaveCorrectKind 	
(const std::vector< Mat > &  	rmats
) 	

参数

  • rmats: 一个包含多个旋转矩阵的向量,这些矩阵描述了不同图像之间的相对旋转。

返回值:

返回一个 WaveCorrectKind 枚举值,指示应使用的波浪校正类型。可能的返回值包括:

  • WAVE_CORRECT_HORIZ: 水平方向的波浪校正。
  • WAVE_CORRECT_VERT: 垂直方向的波浪校正。

代码示例

#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/stitching.hpp>
#include <vector>using namespace cv;
using namespace cv::detail;int main()
{// 示例旋转矩阵,实际应用中应该从图像匹配和估计步骤中获取std::vector< Mat > rmats = { ( Mat_< double >( 3, 3 ) << 1, 0, 0, 0, 1, 0, 0, 0, 1 ), ( Mat_< double >( 3, 3 ) << 0.9848, -0.1736, 0, 0.1736, 0.9848, 0, 0, 0, 1 ),( Mat_< double >( 3, 3 ) << 0.9397, -0.3420, 0, 0.3420, 0.9397, 0, 0, 0, 1 ) };// 将旋转矩阵转换为 CV_32F 类型std::vector< Mat > rmats_f32;for ( const auto& rmat : rmats ){Mat rmat_f32;rmat.convertTo( rmat_f32, CV_32F );rmats_f32.push_back( rmat_f32 );}// 自动检测波浪校正类型WaveCorrectKind wave_correct_kind = autoDetectWaveCorrectKind( rmats_f32 );if ( wave_correct_kind == WAVE_CORRECT_HORIZ ){std::cout << "自动检测到水平方向的波浪校正" << std::endl;}else if ( wave_correct_kind == WAVE_CORRECT_VERT ){std::cout << "自动检测到垂直方向的波浪校正" << std::endl;}else{std::cout << "未检测到明确的波浪校正方向" << std::endl;}return 0;
}

运行结果

自动检测到水平方向的波浪校正

http://www.ppmy.cn/devtools/170678.html

相关文章

算法模型从入门到起飞系列——背包问题(探索最大价值的掘金之旅)

文章目录 前言一、背包问题溯源&#xff08;动态规划&#xff09;1.1 动态规划的概念1.2 动态规划的基本步骤1.3 动态规划的实际应用 二、背包问题2.1 背包问题衍生2.2 0-1背包2.2.1 0-1背包描述2.2.2 0-1背包图解2.2.3 0-1背包代码刨析 2.3 完全背包2.3.1 完全背包描述2.3.2 完…

阿根廷主流收单方式:Rapipago支付

一、Rapipago支付简介 Rapipago支付&#xff0c;是阿根廷领先的现金支付方式&#xff0c;是1996年由阿根廷领先的金融服务公司GIRE发布的支付产品。作为阿根廷最大的电子账单和收款处理企业&#xff0c;Rapipago在阿根廷在线交易市场占比44%&#xff0c;是阿根廷人网购付款的主…

在大数据开发中ETL是指什么?

hello宝子们...我们是艾斯视觉擅长ui设计和前端数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 在数字经济时代&#xff0c;数据已成为企业最核心的资产。然而&#xff0c;分散在业务系统、日志文件…

[node] 3 path与http

前言 path是node提供的一种用于处理路径地址的方法,可以更快速获取到想要的路径信息 目标 1 path中方法的用法 2 如何与读写文件搭配使用 #mermaid-svg-pBIBaiWxWYvL8mAM {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid…

[Vue]列表渲染

文章目录 一、语法介绍二、添加代码三、结果展示四、参考文献 如有错误&#xff0c;请指正&#xff01;&#xff01;&#xff01; 一、语法介绍 <h3>列表渲染</h3><!-- 循环显示数据 --><P v-for"name in names">{{ name }}</P><!…

视觉深度学习骨干网络(backbone)

目录 1. CNN网络 1.1 AlexNet&#xff08;ImageNet Classification with Deep Convolutional Neural Networks&#xff0c;2012&#xff09; 1.2 VGG网络&#xff08; Very Deep Convolutional Networks for Large-Scale Image Recognition&#xff0c;2014&#xff09; ​…

pytest的测试报告allure

1、安装jdk,安装allure、下载allure,配置环境变量 1.1、下载地址:https://repo.maven.apache.org/maven2/io/qameta/allure/allurecommandline 找到最新版本下载即可 【下载zip包】解压到任意目录,建议目录不要在C盘 不要太深 最好不要有中文;进入allure解压后的目录,找到…

基于deepseek的智能语音客服【第二讲】后端异步接口调用封装

本篇内容主要讲前端请求&#xff08;不包含&#xff09;访问后端服务接口&#xff0c;接口通过检索知识库&#xff0c;封装提示词&#xff0c;调用deepseek的&#xff0c;并返回给前端的全过程&#xff0c;非完整代码&#xff0c;不可直接运行。 1.基于servlet封装异步请求 为…