SUSTechPOINTS三维点云标注工具使用

官方地址:SUSTechPOINTS

官方中文教程

相关文章:
OpenPCDet安装、使用方式及自定义数据集训练

安装

git clone https://github.com/naurril/SUSTechPOINTS
cd SUSTechPOINTS
pip install -r requirement.txt
wget https://github.com/naurril/SUSTechPOINTS/releases/download/0.1/deep_annotation_inference.h5  -P algos/models

启动

python main.py

然后浏览器打开http://127.0.0.1:8081

使用

准备数据集

SUSTechPOINTS/data目录下添加准备标注的数据集。详细的目录结构可以参考下面的结构。

   +- data
       +- scene1
          +- lidar
               +- 0000.pcd
               +- 0001.pcd
          +- camera
               +- front
                    +- 0000.jpg
                    +- 0001.jpg
               +- left
                    +- ...
          +- aux_lidar
               +- front
                    +- 0000.pcd
                    +- 0001.pcd
          +- radar
               +- front_points
                    +- 0000.pcd
                    +- 0001.pcd
               +- front_tracks
                    +- ...
          +- calib
               +- camera
                    +- front.json
                    +- left.json
               +- radar
                    +- front_points.json
                    +- front_tracks.json
          +- label
               +- 0000.json
               +- 0001.json
       +- scene2

label文件夹下存放的是每个点云的标签文件。

如果只有激光雷达数据,可以只新建一个lidarlabel文件夹。

标注过程

在这里插入图片描述

在浏览器页面的左上角,可以找到选择数据集文件夹选择要标注的点云文件的下拉框按钮。选择完毕后就可以在页面中看到点云被加载进来了。

鼠标右键选择New,可以看到预定义了许多标注类别,这些标注类别可以在obj_cfg.js文件中找到定义。

选择新建一个Pedestrian类别,可以看到多了一个3D框。选择这个3D框,可以在左侧三个不同视图下调整方框的大小和位置。

在这里插入图片描述

快捷键

可以按住Ctrl,使用鼠标左键选中点云,可以进行快速框选。之后可以在这个基础上进行微调。

q ==> 逆时针旋转 e ==> 顺时针旋转

r ==> 逆时针旋转同时自动调整box大小 f ==> 顺时针选择同时自动调整box大小

g ==> 反向

1 ==> 前一个box 2 ==> 后一个box

3/PageUP ==> 前一帧点云 4/PageDown ==> 后一帧点云

先标号一个物体后,按V键进入批量操作,然后可以选择多个点云,右键选择Auto annotate,可以实现自动标注。

将label文件转化成OpenPCDet的格式

import json

filename = "777.json"

with open(filename, 'r') as f:
    data = json.load(f)

label_list = []
for obj_dict in data:
    label_name = obj_dict["obj_type"]
    pos_xyz = obj_dict["psr"]["position"]
    rot_xyz = obj_dict["psr"]["rotation"]
    scale_xyz = obj_dict["psr"]["scale"]
    
    temp = str(label_name) + " "
    for xyz_dict in [pos_xyz, scale_xyz]:
        for key in ["x", "y", "z"]:
            temp += str(xyz_dict[key])
            temp += " "
    temp += str(rot_xyz["z"]) + "\n"
    label_list.append(temp)

txt_name = filename.split(".")[0] + ".txt"
with open(txt_name, "w") as f:
    for label in label_list:
        f.write(label)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STL——string和vector容器

初识STL **STL的基本概念****vector容器存放内置数据类型****在vector容器中存放自定义数据类型****vector容器嵌套vector容器****string容器——构造函数****string容器——赋值操作****string容器——字符串拼接****string容器——字符串的查找和替换****string容器——字符串…

Midjourney竞品Leap免费试用; Google 刚刚发布10门独立AI课程

🦉 AI新闻 🚀 Midjourney竞品,免费试玩AI图片生成工具Leap,细节还需提升 摘要:Leap是一款免费试玩的AI图片生成工具,用户可以选择不同的生成模型和步长及数量。功能上尚需提高细节把握能力,但…

线段树算法(C++/C)

目录​​​​​​​ 一、线段树算法的概念 二、为什么需要线段树 三、线段树算法的实现 (1)建树 (2)查询 (3)修改 (4)综合代码,求区间和 (5&#xff…

Python暑假自律打卡学习班,免费,速来(2)

小朋友们好,大朋友们好! 我是猫妹,一名爱上Python编程的小学生。 和猫妹学Python,一起趣味学编程。 很快就放暑假了,还有20多天吧! 猫妹对这个暑假相当期待啊, 想想今年的五一劳动节有多火爆…

Openharmony添加编译自己应用

介绍一下Openharmony如何在庞大的编译构建系统中,增添自己想编译的内容。不定期更新~🐸 gn官方文档: https://gn.googlesource.com/gn//main/docs/quick_start.md https://gn.googlesource.com/gn//master/docs/reference.md openharmony官…

Redis 消息队列 Stream

tip:作为程序员一定学习编程之道,一定要对代码的编写有追求,不能实现就完事了。我们应该让自己写的代码更加优雅,即使这会费时费力。 💕💕 推荐:体系化学习Java(Java面试专题&#…

C语言写网络爬虫总体思路

使用C语言编写爬虫可以实现网络数据的快速获取和处理,适用于需要高效处理海量数据的场景。与其他编程语言相比,C语言具有较高的性能和灵活性,可以进行底层操作和内存管理,适合处理较复杂的网络请求和数据处理任务。 但是&#xf…

Redis学习总结(二)

AOF 为什么是在执行完命令之后记录日志? 关系型数据库(如 MySQL)通常都是执行命令之前记录日志(方便故障恢复),而 Redis AOF 持久化机制是在执行完命令之后再记录日志。AOF 记录日志过程为什么是在执行完命…

【LeetCode】HOT 100(7)

题单介绍: 精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。 目录 题单介绍&#…

chatgpt赋能python:Python创建SEO文章的指南

#Python创建SEO文章的指南 在当今数字化世界中,SEO(搜索引擎优化)对于拥有一个成功的在线业务至关重要。SEO文章不仅可以帮助提高网站的排名,还可以吸引更多的访问者并提高转化率。在本文中,我们将介绍如何使用Python…

数据分析第17课seaborn绘图

关系型绘图 seaborn.relplot() 这个函数功能非常强大,可以用来表示多个变量之间的关联关系。默认情况下是绘制散点图(散点图是看到变量与变量之间相关性最优的一个图形),也可以绘制线性图,具体绘制什么图形是通过kind参数来决定的。实际上以下两个函数就是relplot的特例…

2023网安面试题170道,轻松应对面试

最近有不少小伙伴跑来咨询: 想找网络安全工作,应该要怎么进行技术面试准备? 工作不到 2 年,想跳槽看下机会,有没有相关的面试题呢? 为了更好地帮助大家高薪就业,今天就给大家分享两份网络安全工…

(1Gbit)MT28EW01GABA1LPC-0SIT、MT28EW01GABA1HPC-0SIT FLASH - NOR 存储器

MT28EW01GABA1LPC-0SIT、MT28EW01GABA1HPC-0SIT 1Gbit并行NOR闪存器件具有较高的密度、就地执行 (XiP) 性能和架构灵活性,可满足汽车、消费类和移动产品的设计要求。该器件非常适合用于GPS/导航、汽车后视摄像头、手机、智能手机和电子阅读器。该器件还具有较宽的温…

使用OpenFlow和Ryu控制器实现网络交换机的软件定义网络(SDN)控制

使用OpenFlow和Ryu控制器实现网络交换机的软件定义网络(SDN)控制 (1)环境介绍 硬件环境:系统最低要求为2个CPU 、2 GB内存。 拓扑介绍:云平台具体安装拓扑如图5-4所示。 图5-4 云平台安装拓扑 搭建云平…

NodeJS MongoDB⑦

文章目录 ✨文章有误请指正,如果觉得对你有用,请点三连一波,蟹蟹支持😘前言Node&MongoDB 第一步 连接数据库 第二步 创建User Mongodb模型 第三步 简单使用 Mongodb命令 第四步 规范使用 Mongodb命令 &#xff08…

解数独--难的一批

1题目 编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图) 数…

RHEL7同步ntp时间

RHEL7同步ntp时间 RHEL7同步ntp时间测试ntp服务器是否可用抓包分析ntp 查看NTP同步情况ntp服务器配置文件将ntp配置迁移到chronytimedatectl设置时区和时间设置UTC或RTC时间查看所有可用时区查看当前时区设置系统时区启用夏令时timedatectl时间同步timedatectl修改当前日期时间…

基于ADME的分子过滤和 lead-likeness标准

T002 基于ADME的分子过滤和 lead-likeness标准 项目来源于TeachOpenCADD 本文目标 在药物设计的背景下,重要的是通过例如它们的物理化学性质来过滤候选分子。 在这个教程中,从 ChEMBL ( Talktorial T001 )获得的化合物将按照 Lipinsik 的五法则进行…

卷积编码和维特比译码

文章目录 卷积编码维特比译码 卷积编码 卷积码是一种非分组码,通常适用于前向纠错。在分组码中,编码器产生的 n 个码元的一个码组,完全决定于这段时间中 k 比特输入信息。这个码组中的监督位仅监督本码组中 k 个信息位。卷积码在编码时虽然也…

【马蹄集】第十四周作业

第十四周作业 目录 MT2134 泡泡MT2135 调整队伍MT2141 快排变形MT2142 逆序MT2143 线段树 MT2134 泡泡 难度:黄金    时间限制:1秒    占用内存:128M 题目描述 小码哥小时候喜欢吹泡泡,有一次他吹出了 n n n 个一样小的泡泡&…