基于open3d对kitti数据集检测结果可视化

前言

KITTI数据集是自动驾驶和计算机视觉领域中一个广泛使用的基准数据集,它提供了丰富的传感器数据,包括激光雷达、相机和GPS等。Open3D是一个功能强大的3D数据处理和可视化库,支持多种3D数据格式。本文将介绍如何使用Open3D对KITTI数据集的检测结果进行可视化。

准备工作

确保你已经安装了Open3D库。如果尚未安装,可以通过pip安装:

pip install open3d

加载点云

    points  = np.fromfile(str(bin_file), dtype=np.float32).reshape(-1, 4)mask = points[:,0]>0points= points[mask]pts = o3d.geometry.PointCloud()    pts.points = o3d.utility.Vector3dVector(points[:, :3])

解析检测框

def get_obj_corners(obj):center = [obj["Center"]["CenterX"], obj["Center"]["CenterY"], obj["Center"]["CenterZ"]]size = [obj["Size"]["ObjectLength"], obj["Size"]["ObjectWidth"], obj["Size"]["ObjectHeight"]]yaw = obj["Yaw"]rot = np.asmatrix([[math.cos(yaw), -math.sin(yaw)],\[math.sin(yaw),  math.cos(yaw)]])plain_pts = np.asmatrix([[0.5 * size[0], 0.5*size[1]],\[0.5 * size[0], -0.5*size[1]],\[-0.5 * size[0], -0.5*size[1]],\[-0.5 * size[0], 0.5*size[1]]])tran_pts = np.asarray(rot * plain_pts.transpose())tran_pts = tran_pts.transpose()corners = np.arange(24).astype(np.float32).reshape(8, 3)for i in range(8):corners[i][0] = center[0] + tran_pts[i%4][0]corners[i][1] = center[1] + tran_pts[i%4][1]corners[i][2] = center[2] + (float(i >= 4) - 0.5) * size[2]return cornersdef render_3dbbox(points, color):lines = [[0, 1], [1, 2], [2, 3], [3, 0], [4, 5], [5, 6], [6, 7], [7, 4],[0, 4], [1, 5], [2, 6], [3, 7]]colors = [color for i in range(len(lines))]line_set = o3d.geometry.LineSet()line_set.points = o3d.utility.Vector3dVector(points)line_set.lines = o3d.utility.Vector2iVector(lines)line_set.colors = o3d.utility.Vector3dVector(colors)return line_set

结果可视化

源码下载

添加我的微信ailaukalfp29, 回复Open3d

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

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

相关文章

详解 Spring MVC(Spring MVC 简介)

什么是 Spring MVC? Spring MVC 是 Spring 框架提供的一个基于 MVC 模式的轻量级 Web 框架,是 Spring 为表示层开发提供的一整套完整的解决方案,Spring MVC 使用了 MVC 架构模式,将 Web 层职责解耦,基于请求驱动模型&…

基于Java、SpringBoot和uniapp在线考试系统安卓APP和微信小程序

摘要 基于Java、SpringBoot和uniapp的在线考试系统安卓APP微信小程序是一种结合了现代Web开发技术和移动应用技术的解决方案,旨在为教育机构提供一个方便、高效和灵活的在线考试平台。该系统采用Java语言进行后端开发,使用SpringBoot框架简化企业级应用…

SpringCloud微服务之Nacos、Feign、GateWay详解

SpringCloud微服务之Nacos、Feign、GateWay详解 1、Nacos配置管理1.1、统一配置管理1.1.1、在nacos中添加配置文件1.1.2、从微服务拉取配置 1.2、配置热更新1.2.1、方式一1.2.2、方式二 1.3、配置共享1.3.1、配置共享的优先级 1.4、搭建nacos集群1.4.1、初始化数据库1.4.2、下载…

plt多子图设置

import matplotlib.pyplot as plt# 使用 subplots 函数创建一个 2x3 的子图网格 fig, axs plt.subplots(nrows2, ncols3, figsize(16, 10)) # 调整 figsize 来改变图像大小# 遍历每个子图,并绘制一些内容(这里只是简单的示例) for ax in ax…

C语言之函数和函数库以及自己制作静态动态链接库并使用

一:函数的本质 1:C语言为什么会有函数 (1)整个程序分为多个源文件,一个文件分为多个函数,一个函数分成多个语句,这就是整个程序的组织形式。这样的组织好处在于:分化问题、、便于程序…

分布式版本控制工具 git

git 是什么 分布式版本控制工具。github 是代码托管平台。 git 有什么用 保存文件的所有修改记录。使用版本号(sha1 哈希值) 进行区分。随时可浏览历史版本记录。可还原到历史指定版本。对比不同版本的文件差异。 为什么要使用 git 多人协作开发一个大…

STM32手写超频到128M函数

今天学习了野火的STM32教程学会了如何设置STM32的时钟频率,步骤比较详细,也很容易理解,就是视频教程不能跳着看,只能一节节的看,不然会知识不连贯,造成有些知识不理解,连续着看还是没有什么难度…

docker-file 网络

docker挂载 1.绑定挂载(Bind Mounts):绑定挂载是将主机上的文件或目录挂载到容器中。 docker run -v /host/path:/container/path image_name 2.卷挂载(Volume Mounts):卷挂载将 Docker 数据卷挂载到容器中…

【CTF Web】CTFShow web4 Writeup(SQL注入+PHP+字符型注入)

web4 1 管理员阿呆又失败了&#xff0c;这次一定要堵住漏洞 解法 注意到&#xff1a; <!-- flag in id 1000 -->拦截很多种字符&#xff0c;连 select 也不给用了。 if(preg_match("/or|\-|\\\|\/|\\*|\<|\>|\!|x|hex|\(|\)|\|select/i",$id)){die(&q…

Android开发-Android开发中的TCP与UDP通信策略的实现

Android 开发中的 TCP 与 UDP 通信策略的实现 1. 前言2. 准备工作3. Kotlin 中 TCP 通信实现客户端代码示例&#xff1a;服务器代码示例&#xff1a; 4. Kotlin 中 UDP 通信实现客户端代码示例&#xff1a;服务器代码示例&#xff1a; 5. TCP 与 UDP 应用场景分析TCP 实现可靠传…

搭建访问阿里云百炼大模型环境

最近这波大降价&#xff0c;还有限时免费&#xff0c;还不赶快试试在线大模型&#xff1f;下面整理访问百炼平台的千问模型方法。 创建RAM子账号并授权 创建RAM子账号 1. “访问控制RAM”入口&#xff08;控制台URL&#xff09; 然后点击进入“RAM管理控制台” 2. 添加用户 …

vue 区分多环境打包

需求&#xff1a;区分不同的环境&#xff08;测试、正式环境&#xff09;&#xff0c;接口文档地址不同&#xff1b; 配置步骤&#xff1a; 1、在根目录下面新建 .env.xxx 文件&#xff08;xxx 根据环境不同配置&#xff09; 文件中一定要配置的参数项为&#xff1a;NODE_ENV…

【Python搞定车载自动化测试】——Python实现CAN总线Bootloader刷写(含Python源码)

系列文章目录 【Python搞定车载自动化测试】系列文章目录汇总 文章目录 系列文章目录&#x1f4af;&#x1f4af;&#x1f4af; 前言&#x1f4af;&#x1f4af;&#x1f4af;一、环境搭建1.软件环境2.硬件环境 二、目录结构三、源码展示1.诊断基础函数方法2.诊断业务函数方法…

qmt量化教程4----订阅全推数据

文章链接 qmt量化教程4----订阅全推数据 (qq.com) 上次写了订阅单股数据的教程 量化教程3---miniqmt当作第三方库设置&#xff0c;提供源代码 全推就主动推送&#xff0c;当行情有变化就会触发回调函数&#xff0c;推送实时数据&#xff0c;可以理解为数据驱动类型&#xff0…

vs2019 c++ 函数的返回值是对象的值传递时候,将调用对象的移动构造函数

以前倒没有注意过这个问题。但编译器这么处理也符合移动构造的语义。因为本来函数体内的变量也要离开作用域被销毁回收了。测试如下&#xff1a; 谢谢

[SCTF2019]babyre

打开看看还是有花指令 解除后首先pass1是解maze&#xff0c;好像又是三维的 x是25&#xff0c;也就是向下跳五层,注意是立体的 得到 passwd1&#xff1a; ddwwxxssxaxwwaasasyywwdd 接着往下看 有一个加密函数IDA逆向常用宏定义_lodword-CSDN博客 unsigned __int64 __fastca…

primeflex样式库笔记 Display相关的案例

回顾 宽度设置的基本总结 w-full&#xff1a;表示widtdh&#xff1a;100%&#xff1b;占满父容器的宽度。 w-screen&#xff1a;表示占满整个屏幕的宽度。 w-1到w-12&#xff0c;是按百分比划分宽度&#xff0c;数字越大&#xff0c;占据的比例就越大。 w-1rem到w-30rem&…

Oracle的安装以及一些相关问题

系列文章目录 Oracle的安装以及一些相关问题 文章目录 系列文章目录前言一、Oracle的安装二、常用命令三、误删dbf四、PLSQL乱码五、oracle更换数据库字符集总结 前言 一段时间没更新&#xff0c;主要最近一直在找工作&#xff0c;最终还是顺着春招找到工作了&#xff0c;现在…

七大经典排序算法——冒泡排序

文章目录 &#x1f4d1;冒泡排序介绍&#x1f324;️代码实现&#x1f324;️做个简单的优化&#x1f324;️复杂度和稳定性分析☁️结语 &#x1f4d1;冒泡排序介绍 冒泡排序是一种简单但效率较低的排序算法。它重复地比较相邻的两个元素&#xff0c;如果顺序不对则交换它们&…

Leetcode | 5-21| 每日一题

2769. 找出最大的可达成数字 考点: 暴力 数学式子计算 思维 题解 通过式子推导: 第一想法是二分确定区间在区间内进行查找是否符合条件的, 本题最关键的便是 条件确定 , 第二种方法: 一般是通过数学公式推导的,这种题目我称为数学式编程题 代码 条件判断式 class Solution { …