激光雷达(LiDAR)| Open3D:第一节 点云数据的读取与可视化

本节将介绍采用Python语言的点云处理技术-Open3D开源库:支持点云的读写、可视化、重建和配准等处理、3D机器学习等

Open3D 第一节

在这里插入图片描述

核心功能如下:

  • 3D data structures
  • 3D data processing algorithms
  • Scene reconstruction
  • Surface alignment
  • 3D visualization
  • Physically based rendering (PBR)
  • 3D machine learning support with PyTorch and TensorFlow
  • GPU acceleration for core 3D operations
  • Available in C++ and Python

安装

Open3D 官网、官方教程、GitHub网址如下:

  • http://www.open3d.org/
  • http://www.open3d.org/docs/release/
  • https://github.com/isl-org/Open3D

通过执行以下命令安装

# install
pip3 install open3d -i https://pypi.tuna.tsinghua.edu.cn/simple

# verify installation
python -c "import open3d as o3d; print(o3d.__version__)"

读取、写入与可视化

Open3D支持点云(point cloud)、网格(mesh)、图像(RGB-D)三种类型的数据处理。

点云(point cloud)

  • 支持xyz、xyzn、xyzrgb、pts、ply、pcd等格式
    ;采用read_point_cloud函数读取点云,可根据后缀判断文件类型;采用draw_geometries函数进行可视化
# 加载
import open3d as o3d
import numpy as np
# 读取点云、可视化
pc = o3d.io.read_point_cloud("./bunny/bunny.xyz")
# 可视化
o3d.visualization.draw_geometries([pc], window_name = "bunny",
    width = 900, height = 800)

# 显示点数与点坐标
print(pc)
print(np.asarray(pc.points))

# 写入/保存
o3d.io.write_point_cloud("./bunny/bunny_output.pcd", pc)  

在这里插入图片描述
在这里插入图片描述

网格(mesh):

  • 支持ply、stl、obj、off、gltf/glb的格式;采用read_triangle_mesh函数读取
# 读取网格
mesh = o3d.io.read_triangle_mesh("./bunny/bunny.ply")
# 可视化
o3d.visualization.draw_geometries([mesh], mesh_show_wireframe = True) # True 显示网格线

# 显示三角形个数
o3d.visualization.draw_geometries([mesh], width = 900, height = 800,
    mesh_show_wireframe = True) # True 显示网格线

# 写入
o3d.io.write_triangle_mesh("./bunny/bunny_output.ply", mesh)

在这里插入图片描述

图像(RGB-D):

  • 支持img、png等格式;采用read_image函数读取
# 图像读写
img = o3d.io.read_image("./bunny/bunny.jpg")
o3d.visualization.draw_geometries([img])
print(img) # 显示图片大小
print(np.asarray(img))
img = o3d.io.write_image("./bunny/bunny_output.png", img)

在这里插入图片描述

总结

本节介绍采用开源点云处理库Open3D进行点云数据的读写与简单可视化


在这里插入图片描述

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Kitti数据集是一个用于自动驾驶以及计算机视觉的数据集,包含了许多不同类型的数据,包括激光雷达和相机的数据。如果想要将激光雷达数据可视化到图像上,可以使用Python编写代码来实现。 首先需要加载点云数据,在Python中可以使用PCL库或Open3D库。在加载点云数据之后,需要将其转换成图像数据,这可以通过将点云数据投影到一个平面上来实现,这个平面是车辆朝向的平面。在投影点云数据时可以根据需求选择投影的范围和分辨率。然后使用opencv库将投影的数据从灰度图像转换为彩色图像,并将图像保存在本地或者在屏幕上播放。 当然,对于初学者来说,上述代码并不容易理解和实现。因此,建议学习和掌握以下内容: 1. Python基础知识,包括语法、控制流和函数等。 2. PCL和Open3D库的基本使用方法。 3. Opencv库的基本使用方法。 4. 点云数据转换成图像数据的方法和参数。 最后,建议查阅相关的代码示例和文档,因为这有助于更好地理解代码和算法。通过不断练习,您可以将点云数据可视化到图像上,并得到更深层次的理解。 ### 回答2: Kitti数据集是一个基于激光雷达的自动驾驶数据集,里面包括了多种不同场景下的点云数据、图像数据和各种传感器数据。其中,点云数据对于自动驾驶系统的实现具有重要意义。以下是使用Python点云数据可视化到图像上的步骤: 1. 安装必要的Python库: ```python pip install numpy matplotlib open3d opencv-python ``` 2. 加载点云数据: 从Kitti数据集中选取某个场景下的点云数据,使用Python加载点云数据文件: ```python import numpy as np pcd = np.fromfile("path_to_point_cloud_file.bin", dtype=np.float32).reshape(-1, 4) ``` 3. 可视化点云数据: 使用Open3D可视化点云数据,实现点云数据在三维空间内的展示: ```python import open3d as o3d pcd = o3d.geometry.PointCloud() pcd.points = o3d.utility.Vector3dVector(points) o3d.visualization.draw_geometries([pcd]) ``` 4. 投影点云数据到图像平面: 将点云数据投影到图像平面上,通过OpenCV库将点云数据可视化到图像上: ```python import cv2 from kitti_projection import KittiProjection range_image = KittiProjection().project_lidar_to_image(points, image_size=(1242, 375)) cv2.imshow("Range Image", range_image) cv2.waitKey(0) ``` 5. 结论: 通过上述步骤,我们可以将Kitti数据集中的点云数据可视化到图像上,实现自动驾驶系统中点云数据和图像数据的结合,为自动驾驶系统的实现提供支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值