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

Rosbag 制作 TUM数据集

 Rosbag 制作 TUM数据集

一、创建rgb和depth文件夹和txt文件

mkdir rgb
mkdir depth
touch rgb.txt
touch depth.txt

二、替换 bag 路径 和 topic

tum.py:

import os
import cv2
import numpy as np
import rosbag
from sensor_msgs.msg import Image
from cv_bridge import CvBridge# 定义文件路径
script_dir = os.getcwd()
rgb_path = os.path.join(script_dir, 'rgb')
depth_path = os.path.join(script_dir, 'depth')# 创建 CvBridge 实例
bridge = CvBridge()# 定义常量
DEPTH_ENCODING = '32FC1'
DEPTH_NORMALIZE_MIN = 0.0
DEPTH_NORMALIZE_MAX = 1.0
DEPTH_SCALE = 65535num = 1
rgb_width = None
rgb_height = None# 确保文件夹存在
if not os.path.exists(rgb_path):os.makedirs(rgb_path)
if not os.path.exists(depth_path):os.makedirs(depth_path)with rosbag.Bag(os.path.join(script_dir, 'image.bag'), 'r') as bag:  #bag路径with open(os.path.join(script_dir, 'depth.txt'), 'w') as depth_time_file, open(os.path.join(script_dir, 'rgb.txt'), 'w') as rgb_time_file:for topic, msg, t in bag.read_messages():if topic == "/camera/depth/image_raw": #depth topiccv_image = bridge.imgmsg_to_cv2(msg, desired_encoding=DEPTH_ENCODING)# 将深度图像范围归一化到0-1之间cv_image_normalized = cv2.normalize(cv_image, None, DEPTH_NORMALIZE_MIN, DEPTH_NORMALIZE_MAX, cv2.NORM_MINMAX)# 获取深度图像尺寸depth_height, depth_width = cv_image_normalized.shapeif rgb_width is not None and rgb_height is not None:# 调整深度图像尺寸为与彩色图像相同cv_image_normalized = cv2.resize(cv_image_normalized, (rgb_width, rgb_height), interpolation=cv2.INTER_LINEAR)# 将深度图像范围扩展到0-65535并转换为16位无符号整数(CV_16U)cv_image_mono16 = (cv_image_normalized * DEPTH_SCALE).astype(np.uint16)# 保存深度图像image_name = str(num) + '.png'cv2.imwrite(os.path.join(depth_path, image_name), cv_image_mono16)# 写入深度图像的时间戳timestr = "%.8f" % msg.header.stamp.to_sec()depth_time_file.write(timestr + " depth/" + image_name + "\n")if topic == "/camera/rgb/image_raw":  #rgb topiccv_image = bridge.imgmsg_to_cv2(msg, "bgr8")rgb_height, rgb_width, _ = cv_image.shape# 进行深度图像几何校正和对齐操作,使其与彩色图像对齐# 保存彩色图像image_name = str(num) + '.png'cv2.imwrite(os.path.join(rgb_path, image_name), cv_image)# 写入彩色图像的时间戳timestr = "%.8f" % msg.header.stamp.to_sec()rgb_time_file.write(timestr + " rgb/" + image_name + "\n")num += 1

三、开始转换

1.生成图片和txt

python tum.py

2.使用官方脚本得到associate.txt文件

python3 associate.py rgb.txt depth.txt  > associate.txt

相关文章:

Rosbag 制作 TUM数据集

Rosbag 制作 TUM数据集 一、创建rgb和depth文件夹和txt文件 mkdir rgb mkdir depth touch rgb.txt touch depth.txt 二、替换 bag 路径 和 topic tum.py: import os import cv2 import numpy as np import rosbag from sensor_msgs.msg import Image from cv_b…...

本地websocket服务端暴露至公网访问【cpolar内网穿透】

本地websocket服务端暴露至公网访问【cpolar内网穿透】 文章目录 本地websocket服务端暴露至公网访问【cpolar内网穿透】1. Java 服务端demo环境2. 在pom文件引入第三包封装的netty框架maven坐标3. 创建服务端,以接口模式调用,方便外部调用4. 启动服务,出现以下信息表示启动成功…...

男UI设计师主要是做什么的优漫教育

1、根据各种相关软件的用户群,提出构思新颖、有高度吸引力的创意设计;   2、对页面进行优化,使用户操作更趋于人性化;   3、维护现有的应用产品;   4、收集和分析用户对于GUI的需求。   二、需要学什么…...

超实用!Spring Boot 常用注解详解与应用场景

目录 一、Web MVC 开发时,对于三层的类注解 1.1 Controller 1.2 Service 1.3 Repository 1.4 Component 二、依赖注入的注解 2.1 Autowired 2.2 Resource 2.3 Resource 与 Autowired 的区别 2.3.1 实例讲解 2.4 Value 2.5 Data 三、Web 常用的注解 3.1…...

【古月居《ros入门21讲》学习笔记】11_客户端Client的编程实现

目录 说明: 1. 服务模型 2. 实现过程(C) 创建功能包 创建客户端代码(C) 配置客户端代码编译规则 编译 运行 3. 实现过程(Python) 创建客户端代码(Python) 运行…...

小程序和Vue写法的区别主要有什么不同

1.语法不同:小程序使用的是WXML、WXSS和JS,而Vue使用的是HTML、CSS和JSX。 2.数据绑定方式不同:小程序使用的是双向数据绑定,而Vue使用的是单向数据流。 1)在小程序中需要使用e.currentTarget.dataset.*的方式获取&…...

Flutter之MQTT使用

1.添加依赖: 首先,需要在Flutter项目的​​pubspec.yaml​​​文件中添加​​mqtt_client​​依赖。 dependencies:#https://pub.dev/packages/mqtt_clientmqtt_client: ^10.0.02.创建MQTT客户端并连接到MQTT服务器:2.创建一个MQTT客户端实例来进行连接和通信 Fu…...

vr红色教育虚拟展馆全景制作提升单位品牌形象

720全景展馆编辑平台以其独特的优势,为展览行业带来了革命性的变革。这种创新的技术应用为参展商提供了更高效、更便捷、更全面的展示解决方案,进一步提升了展览行业的水平和影响力。 一、提升展示效果,增强品牌形象 720全景展馆编辑平台通过…...

【Spring】Spring是什么?

文章目录 前言什么是Spring什么是容器什么是 IoC传统程序开发控制反转式程序开发理解Spring IoCDI Spring帮助网站 前言 前面我们学习了 servlet 的相关知识,但是呢?使用 servlet 进行网站的开发步骤还是比较麻烦的,而我们本身程序员就属于是…...

事件循环机制及常见面试题

借鉴: 《Javascript 忍者秘籍》第二版,事件循环篇 面试 | JS 事件循环 event loop 经典面试题含答案 - 知乎 (zhihu.com) 概念 主栈队列就是一个宏任务,每一个宏任务执行完就会执行宏任务中的微任务,直到微任务全部都执行完&a…...

智能监控平台/视频共享融合系统EasyCVR接入RTSP协议视频流无法播放原因是什么?

视频集中存储/云存储/视频监控管理平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频资源的鉴权管理、按需调阅、全网分发、智能分析等。AI智能/大数据视频分析EasyCVR平台已经广泛应用在工地、工厂、园区、楼…...

c# statusStrip 显示电脑主机名、IP地址、MAC地址

控件: ToolStripStatusLabel 主机名: Dns.GetHostName() IP地址: Dns.GetHostAddresses(Dns.GetHostName())[0].ToString() 当前程序的版本: Assembly.GetExecutingAssembly().GetName().Version.ToString() 获取系统版本 …...

Cesium.CustomShader颜色值显示错误

官方示例: Cesium Sandcastle 测试过程: 1、修改示例,把customshader中的fragmentShaderText替换为如下代码 void fragmentMain(FragmentInput fsInput, inout czm_modelMaterial material) {//注意:下述颜色的b值是0.1&#x…...

XSLVGL2.0 User Manual 页面管理器(v2.0)

XSLVGL2.0 开发手册 XSLVGL2.0 User Manual 页面管理器 1、概述2、特性3、APIs3.1、xs_page_init3.2、xs_page_wait_inited3.3、xs_page_exit3.4、xs_page_acquire3.5、xs_page_release3.6、xs_page_set_bootlogo3.7、xs_page_setup_clear_finish3.8、xs_page_setup_is_finish…...

论文学习-Attention Is All You Need

Attention Is All You Need 目前暂时不会用到,大概了解一下即可。 Recurrent model 序列化的计算方式,难以并行,随着序列的增长,以前的记忆会逐渐丢失。而Attention机制可以观察到句子中所有的信息,不受距离影响&…...

Springboot 使用 RabbitMq 延迟插件 实现订单到期未支付取消订单、设置提醒消息

示例业务场景: 场景1:客户下单后,15分钟内未支付取消订单! 场景2:客户下单支付成功后,5分钟内商家未处理订单,需要推送一条消息提醒商家。如依旧未处理,则需要每隔2分钟消息提醒一下…...

Linux安装Tesseract-OCR(操作系统CentOS)

Linux安装Tesseract-OCR 第一步,安装依赖第二步,下载安装包第三步,安装leptonica库第四步,安装tesseract第五步,添加语言包第六步,测试 第一步,安装依赖 sudo yum install libpng-devel rpm -q…...

pair和typedef

文章目录 一、pair用法1.2、pair的创建和初始化1.3、pair对象的操作1.4、(make_pair)生成新的pair对象1.5、通过tie获取pair元素值 2、typedef2.1、什么是typedef2.2、typedef用法2.2.1、对于数据类型使用例如:2.2.2、对于指针的使用例如2.2.3、对于结构体的使用 2.…...

rdf-file:分布式环境下的文件处理

一:简介 数据量大了以后,单机解析或者生成文件的效率就很低,需要通过集群处理: 机构过来的文件:我们先对文件进行分片,在利用集群集群处理分片文件。给机构文件:分库分表数据,每个…...

Maven下载与安装教程

一、下载 Maven 进入 Maven 官网:maven.apache.org/download.cgi 选择 .zip 文件下载,最新版本是 3.9.5 二、安装 Maven 将 .zip 文件解压到没有中文没有空格的路径下。例如下图,在创建一个repository的空文件夹在他的下面,用于…...

cursor ctrl+方法跳转

扩展中安装了python就解决了,...

2026网盘风云再起:告别“传不动”,这两款不限速良心网盘实测解析

近些年,网盘市场经历了一轮又一轮的洗牌。从早年各大云盘陆续关停,到后来现有网盘部分服务全面转向收费模式,甚至对非会员进行严苛的网速阉割。用户常常面临「存不下、传不动、下不来」的窘境。 如今已是2026年,网盘市场看似被少…...

三步掌握Citra模拟器:从入门到精通的高效实用指南

三步掌握Citra模拟器:从入门到精通的高效实用指南 【免费下载链接】citra A Nintendo 3DS Emulator 项目地址: https://gitcode.com/gh_mirrors/cit/citra Citra是一款开源的Nintendo 3DS模拟器,它能让你在Windows、Linux和macOS系统上流畅运行《…...

工业机器人离线编程与仿真——RobotStudio基础学习3.27

工业机器人离线编程与仿真——RobotStudio基础学习 一、工业机器人离线编程认知 1.1 工业机器人常用编程方法 工业机器人主流编程方法分为示教编程和离线编程两类,二者核心差异体现在编程环境、对生产的影响等方面,具体对比见下表: 示教编…...

Mi-Create:让小米穿戴设备拥有专属表盘的3步可视化设计法

Mi-Create:让小米穿戴设备拥有专属表盘的3步可视化设计法 【免费下载链接】Mi-Create Unofficial watchface creator for Xiaomi wearables ~2021 and above 项目地址: https://gitcode.com/gh_mirrors/mi/Mi-Create 你是否厌倦了小米手表上那些千篇一律的官…...

智慧树自动化学习助手:技术实现与最佳实践指南

智慧树自动化学习助手:技术实现与最佳实践指南 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树在线学习平台作为国内主流的教育资源平台,…...

Navicat重置工具终极指南:macOS用户免费解锁专业功能的完整方案

Navicat重置工具终极指南:macOS用户免费解锁专业功能的完整方案 【免费下载链接】navicat_reset_mac navicat mac版无限重置试用期脚本 Navicat Mac Version Unlimited Trial Reset Script 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 还…...

5个维度解锁PPTist:浏览器端演示文稿创作的开源解决方案

5个维度解锁PPTist:浏览器端演示文稿创作的开源解决方案 【免费下载链接】PPTist PowerPoint-ist(/pauəpɔintist/), An online presentation application that replicates most of the commonly used features of MS PowerPoint, allowing …...

【Epic认证级适配流程】:UE6.5.0–6.5.3全版本C++27支持矩阵,含3大禁用扩展、2个ABI断裂风险点与1份可审计迁移Checklist

第一章:Epic认证级C27适配的合规性基准与目标定义Epic Games官方于2024年Q3发布的《Unreal Engine 5.5 C Language Compliance Framework》首次将C27草案核心特性纳入引擎构建工具链的强制验证范围。本章确立的合规性基准并非仅面向语法兼容,而是聚焦于A…...

长尾关键词SEO优化费用如何计算_企业自营SEO关键词优化成本是多少

长尾关键词SEO优化费用如何计算_企业自营SEO关键词优化成本是多少 在当今数字化时代,SEO(搜索引擎优化)已经成为企业提升网站流量、增加品牌曝光度的重要手段。其中,长尾关键词SEO优化因其较低的竞争度和高转化率,备受…...