【解析rosbag可视化】二维图像可视化点云

文章目录

    • 前言
    • 一、环境配置
    • 二、代码
    • 三、效果图

前言

  • 一般我们把采集的原始数据放在 rosbag 中。我们要可视化需要对 bag 包解析
  • 二维图像可视化点云思路:在二维图片显示投影的点云就行了

一、环境配置

  • 我用的 python 3.7
  • pip install --extra-index-url https://rospypi.github.io/simple/ rosbag ---- 安装 rosbag 库
  • pip install sensor_msgs --extra-index-url https://rospypi.github.io/simple/ ---- 安装 sensor_msgs 库 网络不稳定有可能中断 多安装几次就好了

二、代码

整体代码很简单,直接上代码。

import cv2
import numpy as np
import rosbag
import sensor_msgs.point_cloud2 as pc2def pointsToBev(points, imgW=540, imgH=1080, minY=-16, maxY=16, minX=-20, maxX=34, show=False):img = np.zeros((imgH, imgW, 3), np.uint8)ratioW = imgW / (maxY - minY)ratioH = imgH / (maxX - minX)for i, pt in enumerate(points):x, y, *other = ptv = imgH - (x - minX) * ratioHu = imgW - (y - minY) * ratioWu, v = int(u), int(v)if (u >= 0 and u < imgW) and (v >= 0 and v < imgH):img[v, u] = [255, 255, 255]  # 点云显示白色if show:cv2.imwrite("test.jpg", img)cv2.imshow("bev", img)cv2.waitKey(0)return imgdef get_iter(path, topic):bag_data = rosbag.Bag(path, "r")iter_points_data = bag_data.read_messages(topics=topic)return iter_points_dataif __name__ == '__main__':bag_path = "test.bag"  # bag包路径topic_name = "/lidar_points"  # 话题名points_iter = get_iter(bag_path, topic_name)  # 生成器 可迭代对象while True:try:topic, msg, t = next(points_iter)  # 每次取一帧,节省内存空间pcd = pc2.read_points(msg)pcd = np.array(list(pcd))pcd = list(np.delete(pcd, np.where(np.isnan(pcd))[0], axis=0))data = np.array(pcd)pointsToBev(data, show=True)except StopIteration:# 遇到 StopIteration 停止迭代print("over")break

三、效果图

在这里插入图片描述

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

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

相关文章

众和策略:短线交易看什么?短线交易看什么指标?

短线交易看什么&#xff1f; 1、k线 当k线出现黄昏十字星、黑乌鸦、乌云盖顶等卖出形状图时&#xff0c;是一种卖出信号&#xff0c;当k线出现早晨十字星、红三兵、等买入形状图时&#xff0c;是一种买入信号。 2、均线 当均线出现死叉、空头摆放时是一种卖出信号&#xff…

ansible ( 2 )

1、command模块 一般用于执行linux命令&#xff0c;不支持管道符和重定向 2、shell模块 相当于command模块的升级版&#xff0c;也可以支持linux命令。支持管道符和重定向 3、cron模块 在远程主机生成定时任务 分 时 日 月 周 minute hour day month weekday job name…

NVMe前世今生

NVMe前世今生 1 NVMe的由来2 NVMe工作原理3 NVMe优点4 NVMe适用场景 本文属于《 NVMe协议基础系列教程》之一&#xff0c;欢迎查看其它文章。 1 NVMe的由来 目前机械硬盘大多数使用 SATA (Serial ATA Advanced Host Controller Interface) 接口&#xff0c;接口协议为 AHCI&a…

鸿蒙-arkTs:开发工具安装

编辑器下载&#xff1a;官网下载地址https://developer.harmonyos.com/cn/develop/deveco-studio/#download 以该版本为例&#xff0c;下载自己电脑对应的系统版本即可&#xff1b; 后续编辑器中的SDK&#xff0c;模拟器等&#xff0c;逐步安装即可&#xff1b; 汉化 编辑器左…

arcgis javascript api4.x加载天地图cgs2000坐标系

需求&#xff1a;arcgis javascript api4.x加载天地图cgs2000坐标系 效果&#xff1a; 示例代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"wid…

C# 实时存储16进制数据,写入文件格式为Raw

1.示例代码 private void button1_Click(object sender, EventArgs e){byte[] data { 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28 }; //模拟要写入的数组List<byte[]> listBytes new List<byte[]>();listBytes.Add(data); //数组转集合RecData(listBytes);…

TensorRT 简单介绍

一、TensorRT 对于算法工程师来说&#xff0c;相信大家已经对TensorRT耳熟能详了&#xff0c;那么这个TensorRT是什么呢&#xff1f; 其实&#xff0c;TensorRT是一个可以在NVIDIA各种GPU硬件平台下运行的推理引擎&#xff0c;同时也是一个高性能的深度学习推理优化器&#x…

自动化测试工具-Selenium:最详细的安装教程

Selenium是一款很不错的自动化测试工具&#xff0c;本文章将按照官方网站的教程进行Selenium的安装&#xff0c;安装之前&#xff0c;首先你要确定你的电脑已配置好Python的环境&#xff0c;没有的话可以参考该文章进行安装&#xff1a;Python纯净式下载与安装-CSDN博客 1. Se…

使用 React 实现自定义数据展示日历组件

目录 背景实现日历组件父组件数据 效果最后 背景 项目中需要实现一个日历组件&#xff0c;并且需要展示月&#xff0c;日所对应的数据&#xff08;因为项目需求问题&#xff0c;就不统计年数据总量&#xff09;。网上找了一堆&#xff0c;基本都不大符合项目需求&#xff0c;且…

PDF转为图片

PDF转为图片 背景pdf展示目标效果 发展过程最终解决方案&#xff1a;python PDF转图片pdf2image注意&#xff1a;poppler 安装 背景 最近接了一项目&#xff0c;主要的需求就是本地的文联单位&#xff0c;需要做一个电子刊物阅览的网站&#xff0c;将民族的刊物发布到网站上供…

Zero date value prohibited 异常处理

项目场景&#xff1a; 在项目中&#xff0c;我们会时常遇到数据查询&#xff0c;今天在对数据进行查询的时候&#xff0c;遇到一个之前闻所未闻的异常&#xff0c;所以记录下来&#xff0c;分享给大家。 问题描述 查询数据为datetime类型的数据时&#xff0c;发现该字段的值为…

Windows 安装RocketMQ

1.rocketmq下载 https://archive.apache.org/dist/rocketmq/5.1.4/ 2.环境准备 64位JDK 1.8; Maven 3.2.x; 64位操作系统系统&#xff0c;本文档在Windows上安装 3.解压到一个无中文无空格的目录下&#xff0c;解压后目录如下&#xff1a; 配置环境变量 4.更改配置 java的…