基于python版的pcl库---open3d,下面对其使用进行简单总结:

一、安装

pip install open3d

二、简单使用

open3d支持如下点云文件类型

Format Description
xyz 每行包含[x, y, z], 其中 xyz 分别是三维坐标
xyzn 每行包含[x, y, z, nx, ny, nz], 其中 nxnynz 是法向量
xyzrgb 每行包含 [x, y, z, r, g, b], 其中rgb 是[0, 1]的float数据
pts 第一行是点数. 接下来的行遵循如下其中一种格式:[x, y, z, i, r, g, b][x, y, z, r, g, b][x, y, z, i] or [x, y, z], 其中xyzi 是 double类型 ,rgb 是 uint8类型
ply 见 多边形格式, ply文件可以包含点云和mesh网格数据
pcd

见 点云数据

//可直接打开pcd,ply文件

source = o3.io.read_point_cloud('bunny.pcd')
//保存pcdt文件

o3.io.write_point_cloud("C:\\Users\\1\\Desktop\\配准数据\\result(cpd).pcd",result)

txt

//打开txt文件
 source = o3.io.read_point_cloud('C:\\Users\\1\\Desktop\\配准数据\\source.txt',format="xyz")
 target = o3.io.read_point_cloud('C:\\Users\\1\\Desktop\\配准数据\\target.txt',format="xyz")
 
//或者
 source = o3.geometry.PointCloud()
 m1 = np.loadtxt('C:\\Users\\1\\Desktop\\配准数据\\source.txt')[:, 0:3]
 source.points = o3.utility.Vector3dVector(m1)

//保存为txt文件
np.savetxt('C:\\Users\\1\\Desktop\\配准数据\\result(cpd).txt', result.points, fmt="%f", delimiter=" ")
“”“
data/task.txt:参数为文件路径以及TXT文本名
self.task: 为要保存的数组名
fmt="%d": 为指定保存的文件格式,这里为十进制
delimiter=" "表示分隔符,这里以空格的形式隔开
”“”

(1)点云读取

read_point_cloud(filename, format='auto', remove_nan_points=True, remove_infinite_points=True, print_progress=False): 

参数:

filename (str): 点云文件路径
format (str, optional, default='auto'): 输入文件格式filehe的路径。 如果未指定或设置为“auto”,则从文件扩展名推断格式 
remove_nan_points (bool, optional, default=False): 如果True,所有包含NaN的点都将从PointCloud中删除。 
remove_infinite_points (bool, optional, default=False): 如果为True,所有包含无限值的点都将从PointCloud中删除 
print_progress (bool, optional, default=False): 如果设置为true,控制台中会显示一个进度条 
返回:

open3d.geometry.PointCloud
默认情况下,Open3D尝试通过文件名扩展名推断文件类型,默认读取的是xyz维度信息。

pcd = o3d.io.read_point_cloud("../../test_data/my_points.txt", format='xyz')
也可以显式地指定文件类型。 在这种情况下,文件扩展名将被忽略。

(2)点云写入

write_point_cloud(filename, pointcloud, write_ascii=False, compressed=False, print_progress=False)

参数:

filename (str): 点云文件保存路径名.
   pointcloud (open3d.geometry.PointCloud): 目标点云
    compressed (bool, optional, default=False): 设置为' ' True ' '以压缩格式写入。 
    print_progress (bool, optional, default=False):如果设置为true,控制台中会显示一个进度条 
返回:bool类型
保存一个点云(o3d.pcd)到本地文件

(3)点云显示

draw_geometries(window_name='Open3D', width=1920, height=1080, left=50, top=50, point_show_normal=False, mesh_show_wireframe=False, mesh_show_back_face, *args, **kwargs):

参数:

geometry_list (List[open3d.geometry.Geometry]): 可视化点云列表。
window_name (str, optional, default='Open3D'): 可视化窗口名称。
width (int, optional, default=1920): 可视化窗口宽
height (int, optional, default=1080): 可视化窗口高
left (int, optional, default=50): 可视化窗口左边距
top (int, optional, default=50): 可视化窗口上边距
point_show_normal (bool, optional, default=False):  如果设置为True,可视化点的法向量。
mesh_show_wireframe (bool, optional, default=False): 如果设置为true,可视化网格线框。
mesh_show_back_face (bool, optional, default=False): 可视化网格三角形背面。
返回:

None

还有一些特殊场景可能需要自定义可视化,具体可以参考tutorial:Customized visualization — Open3D 0.15.1 documentation

​(4)示例

import open3d as o3d
import numpy as npprint("Load a ply point cloud, print it, and render it")
# ply_point_cloud = o3d.data.PLYPointCloud()
plyname = r'fragment.ply'
#读点云
pcd = o3d.io.read_point_cloud(plyname)
print(pcd)
print(np.asarray(pcd.points))
#点云显示
o3d.visualization.draw_geometries([pcd],zoom=0.3412,front=[0.4257, -0.2125, -0.8795],lookat=[2.6172, 2.0475, 1.532],up=[-0.0694, -0.9768, 0.2024])
#保存点云
o3d.io.write_point_cloud("save.pcd", pcd)

参考链接:

1、Basic — Open3D 0.9.0 documentation

2、open3d-点云读写和显示_月亮299的博客-CSDN博客

3、​​​​​​爆肝5万字❤️Open3D 点云数据处理基础(Python版)_孙 悟 空的博客-CSDN博客_open3d教程

open3d使用总结相关推荐

  1. Open3D o3dtut怎么导入才不报错

    Open3D o3dtut 怎么导入才不报错 问题 解决 1. 导入o3dtut 2. 添加open3d_tutorial.py类 3. 构建目录结构 4. 运行成功 写这篇博客源于博友的提问,最初我 ...

  2. Open3D点云处理算法最全合集

    Open3D点云处理算法最全合集,致力于搜集可运行,可视化较好的Open3D算法,持续更新中- 1. Open3D 点云读取及可视化.离群点去除 2. Open3D 点云体素格下采样 3. Open3 ...

  3. Open3D KdTree建立、3种近邻搜索及结果可视化

    1. 点云索引 Open3D KdTree,可以快速的在无序的点云中建立空间拓扑结构,使得能迅速的进行近邻搜索: 2. 近邻方法分类: Open3D这边支持的近邻搜索方法由VTK实现: K近邻搜索(K ...

  4. Open3D DbScanClustering聚类算法

    DBSCAN聚类算法,是基于密度的聚类算法.该算法需要两个参数. labels = np.array(pcd.cluster_dbscan(eps=0.02, min_points=10, print ...

  5. Open3D 三维点云读取可视化、下采样、去除离群点、地面提取

    Open3D:3D数据处理的现代库,是一个开放源代码库,支持快速开发处理3D数据的软件.Open3D在C ++和Python中公开了一组精心选择的数据结构和算法.后端经过高度优化,并支持并行化. 推荐 ...

  6. Open3d学习计划—高级篇 8(网格变形)

    Open3D是一个开源库,支持快速开发和处理3D数据.Open3D在c++和Python中公开了一组精心选择的数据结构和算法.后端是高度优化的,并且是为并行化而设置的. 本系列学习计划有Blue同学作 ...

  7. Open3d学习计划—高级篇 7(颜色映射)

    Open3D是一个开源库,支持快速开发和处理3D数据.Open3D在c++和Python中公开了一组精心选择的数据结构和算法.后端是高度优化的,并且是为并行化而设置的. 本系列学习计划有Blue同学作 ...

  8. Open3d学习计划—高级篇 6(体素化)

    Open3D是一个开源库,支持快速开发和处理3D数据.Open3D在c++和Python中公开了一组精心选择的数据结构和算法.后端是高度优化的,并且是为并行化而设置的. 本系列学习计划有Blue同学作 ...

  9. Open3d学习计划—高级篇 5(RGBD融合)

    Open3D是一个开源库,支持快速开发和处理3D数据.Open3D在c++和Python中公开了一组精心选择的数据结构和算法.后端是高度优化的,并且是为并行化而设置的. 本系列学习计划有Blue同学作 ...

  10. Open3d学习计划—高级篇 4(多视角点云配准)

    本文为转载文章,原创作者为blue同学,可关注他的博客:https://blog.csdn.net/io569417668 Open3D是一个开源库,支持快速开发和处理3D数据.Open3D在c++和 ...

最新文章

  1. 《Implementing QuantLib》译后记
  2. 增加和删除用户组与用户
  3. python代码学习-数据处理图片加遮挡、噪声、模糊
  4. C语言上证指数运行源码,个股对比上证指数公式源码
  5. 云科技网络验证源码_面向虚拟化架构和容器云的开源安全工具
  6. vue划入划出事件_基于vue中对鼠标划过事件的处理方式详解
  7. python调用远程js_python和js交互调用的方法
  8. 【ubuntu安装交叉编译器】安装交叉编译器
  9. 中国联通最快明年实现2G全面退网;苹果发布iOS 14.3后火速撤回:原因未知;Angular 11.0.0 正式发布|极客头条
  10. 台式电脑如何重装系统windows10
  11. 推荐8款Windows装机必备下载神器【建议收藏】
  12. 现代优化算法 之 模拟退火
  13. mysql性能分析工具_MySQL性能分析、及调优工具使用详解
  14. MySQL重复数据排序_排序数据以在MySQL中重复记录
  15. linux下使用命令行将informix数据库表导出.unl文件
  16. 计算机启动读取硬件配置信息,开机自检画面如何查看电脑硬件配置信息
  17. 几何光学学习笔记(13)- 4.2双平面镜成像
  18. 我与无人机的2020上半年
  19. 万字长文,图文并茂的给你讲清SpringBoot注解,自动装配原理!
  20. linux 开发工具集合

热门文章

  1. 云计算之云计算和虚拟化的区别
  2. 深度神经网络简单介绍,深度神经网络百度百科
  3. 关注这场直播,了解能源行业双碳目标实现路径
  4. 蓝桥杯--算法提高 字符串跳步
  5. Ubuntu下搜狗輸入法不能输入汉字
  6. 如何清理废弃pv和其对应的文件夹
  7. 方正飞鸿智能信息平台(Fix ES2007)
  8. #import 指令 (C++)
  9. VS2013好用的插件
  10. uni-app上传安卓应用市场的坑