OpenCV图像拼接(10)用于实现图像拼接过程中的时间流逝(timelapse)效果的一个类cv::detail::Timelapser

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

算法描述

cv::detail::Timelapser 是 OpenCV 库中用于实现图像拼接过程中的时间流逝(timelapse)效果的一个类。它通常用于将一系列的图像或视频帧组合成一个平滑过渡的序列,常应用于延时摄影(time-lapse photography)或者视频合成等领域。

这个类的主要作用是管理图像拼接的过程,并提供一种方法来创建不同类型的 Timelapser 实例,以适应不同的需求和场景。

主要成员函数

  • createDefault(): 静态成员函数,用于创建一个默认类型的 Timelapser 对象。根据传入的参数类型,可以生成不同策略的时间流逝实例。

  • apply(): 应用当前的拼接设置到输入图像上,生成拼接结果。该函数可能有不同的重载形式,以支持不同类型的操作和输入。

代码示例

#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/stitching/detail/timelapsers.hpp>
#include <vector>using namespace cv;
using namespace cv::detail;
using namespace std;int main()
{// 图像文件列表vector< String > img_names = { "/media/dingxin/data/study/OpenCV/sources/images/lapsetimer1.png", "/media/dingxin/data/study/OpenCV/sources/images/lapsetimer2.png","/media/dingxin/data/study/OpenCV/sources/images/lapsetimer3.png" };vector< Mat > imgs;// 加载所有图像for ( const auto& name : img_names ){Mat img = imread( name, IMREAD_COLOR );  // 确保以彩色模式读取图像if ( img.empty() ){cout << "无法加载图像: " << name << endl;return -1;}imgs.push_back( img );}// 创建Timelapser实例Ptr< Timelapser > timelapser = Timelapser::createDefault( Timelapser::AS_IS );// 初始化Timelapser,假设所有图像具有相同的尺寸Size dst_size = imgs[ 0 ].size();vector< Point > corners;  // 每个图像对应的角落位置vector< Size > sizes;     // 每个图像的尺寸for ( size_t i = 0; i < imgs.size(); ++i ){corners.push_back( Point( 0, 0 ) );  // 假设每个图像都在左上角sizes.push_back( dst_size );         // 所有图像具有相同的尺寸}timelapser->initialize( corners, sizes );// 处理每张图像for ( size_t i = 0; i < imgs.size(); ++i ){Mat img_converted;imgs[ i ].convertTo( img_converted, CV_16SC3 );  // 将图像转换为16位深度、三通道的短整型格式timelapser->process( img_converted, noArray(), Point( 0, 0 ) );  // 使用noArray()作为mask,假设不需要掩码// 获取当前帧的结果UMat result_umat = timelapser->getDst();Mat result;result_umat.copyTo( result );  // 将UMat转换为Mat以便显示或保存Mat restoredImageMat;result.convertTo( restoredImageMat, CV_8U );  // 如果需要的话,调整数据类型以适应显示imshow( "Current Frame", restoredImageMat );waitKey( 300 );  // 暂停一段时间以便观察每一帧}// 获取最终拼接结果UMat final_result_umat = timelapser->getDst();Mat final_result;final_result_umat.copyTo( final_result );imwrite( "final_timelapse.jpg", final_result );cout << "时间流逝视频的最后一帧已保存为 final_timelapse.jpg" << endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/73867.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Transformer 通关秘籍2:利用 BERT 将文本 token 化

前面两节分别通过两个代码示例展示了模型将文本转换为 token 之后是什么样的&#xff0c;希望你可以对此有一个感性的认识。 本节来简要介绍一下将一个连续的文本转换为 token 序列的大致过程&#xff0c;这个过程被称为分词&#xff0c;也叫 tokenization。 在你没了解这方面…

Optional的stream方法,flatMap, filter应用

Java 8引入的Optional和Stream彻底改变了我们处理空值和集合操作的方式。本文将深入探讨如何将二者结合使用&#xff0c;通过四个核心场景提升代码的健壮性和简洁性。 一、Optional构成的Stream&#xff1a;空值自动过滤 当处理Optional集合时&#xff0c;我们常需要过滤掉空…

参加李继刚线下活动启发:未来提示词还会存在吗?

上周六&#xff0c;我参加了李继刚老师组织的线下活动。 现场干货满满&#xff0c;尤其是关于 AI 时代提示词的价值、与 AI 沟通的艺术等话题&#xff0c;李老师的分享如同醍醐灌顶&#xff0c;让我对 AI 人机协作有了更深的理解。 将几点核心收获整理出来&#xff0c;与大家…

Python基础知识第二天:从格式化到流程控制

Python基础知识第二天&#xff1a;从格式化到流程控制 大家好&#xff01;今天我们来梳理Python的一些重要基础知识&#xff0c;包括格式化输出、输入函数、运算符以及流程控制语句。 1. 格式化输出 Python提供了多种格式化输出的方式&#xff1a; # %d, %f, %s 格式化name &q…

GDB: coredump

前言&#xff1a;一句话如下使用 gdb [exec_file] [core_file] # or gdb -c [core_file] [exec_file] #-c指定转储的core文件 gdb -c core.5213 spp_uc_frequent_contact_ol_worker # 进入后输入bt查看调用栈 bt #显示所有帧栈 bt 10 #显示前面10个帧栈(感觉没啥用) bt …

21_js正则_表单验证

目录 正则 一、 正则的概念 二、创建正则方式 2.1 构造函数去创建正则 2.2 字面量去创建正则 2,3 test方法 三、正则修饰符 四、 正则的方法 lastIndex test方法 exec 五、字符串方法 replace match search split 六、正则表达式的构成 元字符-- 定位符 元字…

矿山自动化监测解决方案

1.行业现状 为贯彻落实《中共中央国务院关于推进安全生产领域改革发展的意见》《“十四五”矿山安全生产规划》&#xff08;应急〔2022〕64号&#xff09;、《国务院安委会办公室关于加强矿山安全生产工作的紧急通知》&#xff08;安委办〔2021〕3号&#xff09;等有关工作部署…

企业级知识库建设:自建与开源产品集成的全景解析 —— 产品经理、CTO 与 CDO 的深度对话

文章目录 一、引言二、主流产品与方案对比表三、自建方案 vs. 开源产品集成&#xff1a;技术路径对比3.1 自建方案3.2 开源产品集成方案 四、结论与个人观点 一、引言 在当今数据驱动的商业环境中&#xff0c;构建高质量的知识库已成为企业数字化转型的关键一环。本博客分别从…

【蓝桥杯】单片机设计与开发,温度传感器DS18B20

一、温度传感器概述 结构图 二、通信过程 三、onewire单总线协议概述 四、单总线的工作原理 黑粗线是单片机发送的&#xff0c;浅的是s18b20回应的 五、温度传感器的应用 六、onewire 七、课后习题

Python 在Word中查找并替换文本

在操作Word文档时&#xff0c;如果想要修正一处反复出现的拼写错误&#xff0c;统一文中前后不一致的术语&#xff0c;或者将文档中所有的旧联系方式更新为新号码。这时我们可以使用 Word中的查找替换功能&#xff0c;快速定位并批量处理文档中的特定文本&#xff0c;提升编辑效…

Python 笔记 (二)

Python Note 2 1. Python 慢的原因2. 三个元素3. 标准数据类型4. 字符串5. 比较大小: 富比较方法 rich comparison6. 数据容器 (支持*混装* )一、允许重复类 (list、tuple、str)二、不允许重复类 (set、dict)1、集合(set)2、字典(dict)3、特殊: 双端队列 deque 三、数据容器的共…

kill子进程后再wait可以吗?

在父进程中先使用 kill 函数终止子进程&#xff0c;之后再使用 wait 函数是可行的&#xff0c;下面从原理、使用示例、注意事项几个方面详细说明。 原理 kill 函数&#xff1a;其作用是向指定进程发送信号。当向子进程发送 SIGTERM&#xff08;通常用于请求进程正常终止&…

ai-api-union项目,适配各AI厂商api

项目地址&#xff1a;alpbeta/ai-api-union 需求&#xff1a;实现兼容各大模型厂商api的流式对话和同步对话接口&#xff0c;本项目现兼容智谱、豆包、通义、通义版deepseek 设计 一个ChatController类对外暴露这两个接口&#xff0c;入参都为ChatRequest请求类&#xff0c;…

【QT】QT样式设计

QT样式设计 一、QT工程中添加资源文件1.资源文件&#xff1a;2. 添加步骤&#xff1a;3. 新增资源文件以及删除现有的资源文件4. 使用资源文件 二、QT中的qss语句(样式设计语句)1. 样式设计2.常见的qss语句示例代码&#xff1a; 一、QT工程中添加资源文件 1.资源文件&#xff…

Megatron-LM中的deepseek-v3实现

Megatron-LM&#xff1a;https://github.com/NVIDIA/Megatron-LM/tree/main 使用此仓库构建的著名的库也有很多&#xff0c;如: Colossal-AI, HuggingFace Accelerate, and NVIDIA NeMo Framework.Pai-Megatron-Patch工具是阿里人工智能平台PAI算法团队研发,ai-Megatron-Patch…

[mlr3] Bootstrap与交叉验证k-fold cross validation

五折交叉验证因其无放回分层抽样和重复验证机制&#xff0c;成为超参数调优的首选&#xff1b; 而Bootstrap因有放回抽样的重复性和验证集的不稳定性&#xff0c;主要服务于参数估计&#xff08;置信区间的计算&#xff09;而非调优。 实际应用中&#xff0c;可结合两者优势&am…

某大麦手机端-抢票

引言 仅供学习研究&#xff0c;欢迎交流 抢票难&#xff0c;难于上青天&#xff01;无论是演唱会、话剧还是体育赛事&#xff0c;大麦网的票总是秒光。作为一名技术爱好者&#xff0c;你是否想过用技术手段提高抢票成功率&#xff1f;本文将为你揭秘大麦手机端抢票的核心技术…

最常使用的现代C++新特性介绍

现代 C泛指的是从 C11 之后的 C标准. 从 C11 开始, C标准委员会实行班车制, 没三年发布一个新版本, 如果一个功能在新版本发布之前已经准备好, 则可以加入该版本中, 否则延后到下一个版本. 语言核心 自 C11 开始, 语言语法层面加了许多语法糖, 还有增加了一些新语法.使得 C语…

SQL Server:当在删除数据库时因为存在触发器而无法删除

当在删除数据库时因为存在触发器而无法删除&#xff0c;你可以通过禁用触发器来解决这个问题。下面为你介绍在 SQL Server 里禁用和启用触发器的方法。 禁用数据库中所有表的触发器 你可以使用系统视图 sys.triggers 来查询数据库里所有的触发器&#xff0c;然后生成禁用这些…

【Linux篇】进程入门指南:操作系统中的第一步

步入进程世界&#xff1a;初学者必懂的操作系统概念 一. 冯诺依曼体系结构1.1 背景与历史1.2 组成部分1.3 意义 二. 进程2.1 进程概念2.1.1 PCB&#xff08;进程控制块&#xff09; 2.2 查看进程2.2.1 使用系统文件查看2.2.2 使⽤top和ps这些⽤⼾级⼯具来获取2.2.3 通过系统调用…