Open3d(一)——点云数据读取可视化

该代码示例展示了如何使用Open3D库进行点云、图像和网格数据的读取、写入及可视化操作。通过`read_point_cloud`、`write_point_cloud`、`draw_geometries`等函数,实现数据的读写和展示。同时,代码还演示了读取和显示图像以及处理网格数据的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

亲测代码程序可运行使用,open3d版本0.13.0。

open3d数据资源下载:GitHub - Cobotic/Open3D: Open3D: A Modern Library for 3D Data Processing

代码执行功能有:点云数据、图像数据和网格数据的读写与可视化,详情请见代码。

'''
Author: dongcidaci
Date: 2021-09-08 11:18:20
LastEditTime: 2021-09-08 13:35:26
LastEditors: Please set LastEditors
Description: In User Settings Edit
FilePath: \open3d_code\01.py
'''
import open3d as o3d
import numpy as np

#点云数据
pcd = o3d.io.read_point_cloud("table_scene_lms400.pcd")
print(pcd)#输出点云的个数
print(np.asarray(pcd.points))#输出点的三维坐标
o3d.io.write_point_cloud("table_scene_mug_stereo_textured.pcd",pcd)#写入点云数据
o3d.visualization.draw_geometries([pcd],width=800,height=800)#显示点云
#图像数据
img = o3d.io.read_image("1.jpg")#读取图像数据
print(img)#显示长宽
o3d.io.write_image("5656.png",img)#写入图像数据
o3d.visualization.draw_geometries([img],window_name="open3d 显示图像",
                                  width=640,height=640,
                                  left=50,top=50,
                                  mesh_show_back_face=False)#显示图像
#网格数据
print("Testing IO for meshes ...")
mesh = o3d.io.read_triangle_mesh("../../TestData/knot.ply")
print(mesh)
o3d.io.write_triangle_mesh("copy_of_knot.ply",mesh)
### 点云数据读取可视化的方法及工具 #### 使用Python读取.mat文件中的点云数据 为了实现这目标,可以利用`scipy.io.loadmat()`函数加载MATLAB格式的`.mat`文件。此功能允许访问存储于这些文件内的数组和其他变量。旦成功导入所需的数据集,下步便是准备其用于后续处理或显示。 ```python from scipy import io as sio # 加载 .mat 文件 data = sio.loadmat('path_to_file.mat') point_cloud_data = data['variable_name'] # 替换为实际保存点云数据的变量名 ``` #### 处理和转换点云数据 对于获取到的原始点云信息,在某些情况下可能需要进步清洗、过滤或是变换坐标系等预处理工作。这通常涉及到去除噪声点、裁剪超出特定范围之外的对象以及调整尺度单位等方面的操作。借助像NumPy这样的高效数值计算库能够简化这类任务。 ```python import numpy as np # 假设 point_cloud_data 是个 N×3 的 NumPy 数组 (N 表示点的数量, 每列分别代表 X,Y,Z 坐标) filtered_points = point_cloud_data[(point_cloud_data[:, 0] >= min_x) & (point_cloud_data[:, 0] <= max_x) & (point_cloud_data[:, 1] >= min_y) & (point_cloud_data[:, 1] <= max_y)] # 进行简单的边界框筛选作为例子 ``` #### 可视化点云数据 完成上述准备工作之后,则可选用多种方式呈现最终成果。例如,采用Matplotlib绘制二维投影;或者更推荐的是运用专门针对三维形设计的强大框架——Open3D来进行全方位立体展现。后者不仅支持基本的颜色映射和平滑渲染效果,还提供了交互式的探索环境让用户可以从不同角度观察模型细节[^2]。 ```python import open3d as o3d pcd = o3d.geometry.PointCloud() pcd.points = o3d.utility.Vector3dVector(filtered_points) o3d.visualization.draw_geometries([pcd]) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值