一、Open3D

A Modern Library for 3D Data Processing,Intel出品,MIT协议。

Open3D是一个支持3D数据处理软件快速开发的开源库。Open3D使用C++和Python公开了一组精心选择的数据结构和算法。后端经过高度优化,并设置为并行化。Open3D的依赖项较少,可在不同的平台上编译与布置。

Open3D侧重于三维数据的可视化与整体处理算法。想学习的同学可百度“Open3D学习计划”。

安装:pip install open3d 或者 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple open3d

分享给有需要的人,代码质量勿喷。

importopen3daso3d

importnumpyasnp

frommatplotlibimportpyplotasplt

# read PC

pcd = o3d.io.read_point_cloud("F:/test.pcd")

# # write PC

# o3d.io.write_point_cloud("F:/newFile.pcd",pcd)

# DBSCAN

witho3d.utility.VerbosityContextManager(o3d.utility.VerbosityLevel.Debug)ascm:

labels = np.array(pcd.cluster_dbscan(eps=0.1, min_points=10, print_progress=True))

max_label = labels.max()

print(f"point cloud has{max_label +1}clusters")

colors = plt.get_cmap("tab20")(labels / (max_labelifmax_label >0else1))

colors[labels <0] =0

pcd.colors = o3d.utility.Vector3dVector(colors[:, :3])

# 可视化

o3d.visualization.draw_geometries([pcd],width=910,height=540)

3D plotting and mesh analysis through a streamlined interface for the Visualization Toolkit (VTK),MIT协议。

PyVista具有可视化工具包(VTK)的高级API,空间数据集的网格数据结构和过滤方法,使3D绘图变得简单,可用于大型/复杂数据几何.

PyVista(以前称为vtki)是可视化工具包(VTK)的帮助程序模块,它通过NumPy和直接数组访问采用了与VTK接口不同的方法。该软件包提供了Pythonic的,文档齐全的界面,该界面公开了VTK强大的可视化后端,以促进对空间参考数据集的快速原型制作,分析和可视化集成。该模块可用于演示文稿和研究论文的科学绘图,以及其他与网格相关的Python模块的支持模块。

PyVista侧重于可视化。

安装:pip install pyvista 或者 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pyvista

分享给有需要的人,代码质量勿喷。

importpyvistaaspv

mesh = pv.read('F:/test.vtk')

mesh.plot(screenshot='F:/test.vtk.png')

/* ************************************************** 挺好的 *************************************************************** */

PCL(Point Cloud Library)是主要用于点云(二三维图像也可)的独立、强大的开源项目,BSD协议,可免费用于商业和研究用途。

PCL是点云数据处理的王者库,近乎全能,可视化、读写、算法(!!!)。

但是,python-pcl安装较为麻烦!!!建议谷歌或百度。

pclpy是python-pcl的姊妹库吧,安装很方便,算法接口啥的也挺全的,而且,支持las。同时存在某些限制,比如正在开发中,API和功能测试也许会不稳定,只支持Windows和python 3.6 x64。

安装:pip install pclpy 或者 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pclpy

分享给有需要的人,代码质量勿喷。

importpclpy

frompclpyimportpcl

# 读

pc=pclpy.pcl.PointCloud.PointXYZRGBA()

pcl.io.loadPCDFile('F:/test.pcd',pc)

# 显示

viewer=pcl.visualization.PCLVisualizer('Point Cloud viewer')

viewer.addPointCloud(pc)

while(notviewer.wasStopped()):

viewer.spinOnce(100)

pyntcloud是一个Python 3.x库,利用Python科学堆栈的强大功能处理3D点云。

pyntcloud侧重于点云数据处理,例如读写(支持las)、属性、滤波、数据结构组织、构建体素、抽稀、RANSAC等。与Open3D、PyVista等库衔接较好。

安装:pip install pyntcloud 或者 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pyntcloud

分享给有需要的人,代码质量勿喷。

frompyntcloudimportPyntCloud

importopen3daso3d

# io

cloud = PyntCloud.from_file("F:/test.ply")

# structures

kdtree_id = cloud.add_structure("kdtree")

# neighbors

k_neighbors = cloud.get_neighbors(k=5, kdtree=kdtree_id)

# scalar_fields

ev = cloud.add_scalar_field("eigen_values", k_neighbors=k_neighbors)

# filters

f = cloud.get_filter("BBOX", min_x=0.1, max_x=0.8)

# FROM Open3D

original_triangle_mesh = o3d.io.read_triangle_mesh("F:/test.ply")

cloud = PyntCloud.from_instance("open3d", original_triangle_mesh)

# TO Open3D

cloud = PyntCloud.from_file("F:/test.ply")

converted_triangle_mesh = cloud.to_instance("open3d", mesh=True)# mesh=True by default

/* *************************************************  liblas系列  *************************************************** */

libLAS是一个C/C++/Python库(接触的第一个点云处理库),用于读写LAS格式的点云。libLAS支持ASPRS LAS格式规范版本:1.0、1.1、1.2和1.3(基本支持)。虽然libLAS已经被 PDAL / Laspy 取代,但不可否认,它是一个很nice的库。

libLAS库侧重于点云的读写、修改编辑处理。

安装:pip install liblas  或者  pip install -i https://pypi.tuna.tsinghua.edu.cn/simple liblas

分享给有需要的人,代码质量勿喷。

importliblas

fromliblasimportfile

fromliblasimportheader

# 读

f=file.File('F:/test.las',mode='r')

# 头文件

lasHeader = f.header

print('主版本号:'+ str(lasHeader.major_version))

print('副版本号:'+ str(lasHeader.minor_version))

print('最小值:%f,%f,%f'% (lasHeader.min[0],lasHeader.min[1],lasHeader.min[2]))

print('最大值:%f,%f,%f'% (lasHeader.max[0],lasHeader.max[1],lasHeader.max[2]))

print('比例:%f,%f,%f'% (lasHeader.scale[0],lasHeader.scale[1],lasHeader.scale[2]))

print('偏移量:%f,%f,%f'% (lasHeader.offset[0],lasHeader.offset[1],lasHeader.offset[2]))

print('点云数量:%d'% (lasHeader.point_records_count))

# 遍历点

forpointinf:

# point = f[0]

print('x=%f, y=%f, z=%f, intensity=%d, PointsourceID=%d, GPStime=%f,

Red=%d, Green=%d, Blue=%d, Classification=%d, UserData=%d'

% (point.x, point.y, point.z,

point.intensity, point.point_source_id, point.raw_time,

point.color.red, point.color.green, point.color.blue,

point.classification, point.user_data))

# 写

las_header = header.Header()

las_header.dataformat_id =1

las_header.minor_version =2

fw = file.File('F:/new.las', mode='w', header=las_header)

pt = liblas.point.Point()

foriinrange(10):

pt.x =118.0+i

pt.y =532.0+i

pt.z =112.0+i

fw.write(pt)

fw.close()

print('ok666')

libLAS的升级版。PDAL(Point Data Abstraction Library)是一个C/C ++开源库,用于转换和处理点云数据。尽管库中许多重点工具源于LiDAR,但它不限于LiDAR数据。

安装:pip install PDAL(没成功,郁闷)

兼容 libLAS 的点云处理python库,与 libLAS算是一家吧。Laspy是一个用于读取、修改和创建LAS LiDAR文件的python库。对LAZ的支持仅限于1.0-1.3版本。Laspy与Python 2.6+和3.5+兼容。Laspy包含一组命令行工具,可用于执行基本文件操作,例如格式转换和验证以及比较LAS文件。

安装:pip install laspy 或者 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple laspy

分享给有需要的人,代码质量勿喷。

importnumpyasnp

importlaspy

fromlaspy.fileimportFile

# 读

f = File('F:/test.las', mode='r')

# 头

lasHeader = f.header

print('主版本号:'+ str(lasHeader.major_version))

print('副版本号:'+ str(lasHeader.minor_version))

print('最小值:%f,%f,%f'% (lasHeader.min[0],lasHeader.min[1],lasHeader.min[2]))

print('最大值:%f,%f,%f'% (lasHeader.max[0],lasHeader.max[1],lasHeader.max[2]))

print('比例:%f,%f,%f'% (lasHeader.scale[0],lasHeader.scale[1],lasHeader.scale[2]))

print('偏移量:%f,%f,%f'% (lasHeader.offset[0],lasHeader.offset[1],lasHeader.offset[2]))

print('点云数量:%d'% (lasHeader.point_records_count))

# 遍历点

points = f.points

defscaled_x_dimension(las_file):

x_dimension = las_file.X

scale = las_file.header.scale[0]

offset = las_file.header.offset[0]

return(x_dimension*scale + offset)

foriinrange(66,666):

print('x=%f, y=%f, z=%f, intensity=%d, GPStime=%f, Classification=%d, UserData=%d,

Red=%d, Green=%d, Blue=%d'

% (scaled_x_dimension(f)[i], f.y[i],f.z[i],

f.intensity[i], f.gps_time[i],f.classification[i],f.user_data[i],

f.red[i],f.green[i], f.blue[i]))

# 筛选路面点

c11 = f.Classification ==11

# 保存路面点为新文件

outFile = File('F:/output.las', mode='w', header=f.header)

outFile.points = f.points[c11]

outFile.close()

print("ok")

/* ************************************************************** 其它 *************************************************** */

plyfile用于读写ply文件。

安装:pip install plyfile 或者 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple plyfile

Point Cloud Utils (pcu) - A Python library for common tasks on 3D point clouds

挺实用。

安装:pip install git+git://github.com/fwilliams/point-cloud-utils

pptk(Point Processing Toolkit)是用于可视化和处理二三维点云的python包。目前,其具有以下功能:

(1)点云查看,可接受任何3列numpy数组作为输入;

(2)基于Octree的LOD点云渲染可视化;

(3)支持点选,用于检查和注释点数据;

(4)并行化的点KD-tree;

(5)基于点云邻域PCA的法线估计。

安装:pip install pptk 或者 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pptk

分享给有需要的人,代码质量勿喷。

importpptk

# Create 100 random points

xyz = pptk.rand(200,3)

# Visualize points shaded by height

v = pptk.viewer(xyz, xyz[:,2])

v.set(point_size=0.005)

PyLidar用于从LiDAR设备中获取数据。其分为PyLidar2和PyLidar3,分别对应python2和python3版本。

安装:pip install PyLidar3

/* ************************************** 以下的已经不维护或者很久没更新了 ********************************************** */

This code is no longer maintained.

Originally designed as a proof-of-concept for reading Light Detection and Ranging (LIDAR) data in binary LAS format and converting to GIS point data formats (xyz or shapefile). Today, there are much better tools for using LIDAR in python code - this repo is for archival purposes only.

The las module implements a reader for LAS (Log ASCII Standard) well log files (LAS 2.0). For more information about this format, see the Canadian Well Logging Society web page (http://www.cwls.org/las/).

python点云处理模块_python版本的点云数据处理库相关推荐

  1. python词云去除词_Python生成歌词词云

    对于数据展示这一块有时候会用到词云,python中提供的wordcloud模块可以很灵活的完成 生成词云除了使用python提供的wordcloud模块以为还有在线的生成方式https://worda ...

  2. 如何查看python安装了哪些模块_Python模块如何安装 并确认模块已经安装好?

    看自己有没有安装好,最简单的办法在可以再控制台下: C:\Users\sony>python Python 2.7.6 (default, Nov 10 2013, 19:24:18) [MSC ...

  3. python下载matplotlib.finance模块_Python pyfinance包_程序模块 - PyPI - Python中文网

    PyFinance pyfinance是一个python包,用于投资管理和安全回报分析. 它是对面向量化金融的现有软件包的补充,例如pyfolio, 熊猫数据读取器,以及fecon235 支持巨蟒3. ...

  4. python必学的模块_Python必学的模块有哪些?

    展开全部 简单来说,模块就是一堆代码实现某个功32313133353236313431303231363533e4b893e5b19e31333433653866能,它们是已经写好的.py文件,在我们 ...

  5. python中的系统模块_python中一些获取系统信息的模块

    1.platform模块 python中,platform模块给我们提供了很多方法去获取操作系统的信息 如: import platform platform.platform() #获取操作系统名称 ...

  6. python 怎么安装电脑摄像头模块_Python模块及安装

    Python模块及安装 09-Python模块及安装思维导图下载 1.模块的使用及安装 <1>Python中的模块 在Python中有一个概念叫做模块(module),这个和C语言中的头文 ...

  7. python中产生随机数模块_Python中random模块生成随机数详解

    Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...

  8. math库是python语言的数学模块_Python 数学模块(Math)

    Python 数学模块(Math) 了解Python中可用的所有数学函数以及如何在程序中使用它们. Python中的数学模块是什么? math 模块是Python中的标准模块,并且始终可用.要在此模块 ...

  9. python中的random模块_Python中的random模块

    Python 中的 random 模块 1. Python 中的 random 模块用于生成随机数.下面介绍一下 random 模块中最常用 的几个函数. 2. 3. random.random 4. ...

最新文章

  1. VUE的组件DEMO
  2. Android 强烈推荐:程序员接私活那点事
  3. (需求实战_进阶_04)SSM集成RabbitMQ 通配符模式 关键代码讲解、开发、测试
  4. 搜索引擎排序DEMO
  5. 新手必看:揭秘德州扑克概率表
  6. 【优化算法】饥饿游戏搜索算法(HGS)【含Matlab源码 1802期】
  7. 要马儿跑,又要马儿不吃草?聊聊联邦学习与分布式机器学习
  8. 常见的几种IDEA使用技巧
  9. 《林肯传》--[美]戴尔·卡耐基
  10. 应届大学生从Java培训班学完好就业吗?
  11. 【日常开发必备】1.5W+字的 MySQL 速查手册
  12. 国产ChatGPT:科大讯飞、网易有道的新“斗兽场”
  13. 装修颜色搭配方案,打造与众不同的家居
  14. JS 简繁体互转代码
  15. 使用SQLmap检测漏洞
  16. 重庆大学明月科创班课程记录1.1大一上自然与设计-仿生蝗虫设计(Solidworks)
  17. 定宣讲初稿,筑宣讲之基
  18. enum java 赋值_java enum无法赋初始值
  19. python图画制作_python语言创意绘画-用python画画
  20. Python beautifulsoup库实践

热门文章

  1. 鼠标指针文件格式解析
  2. 飞桨图像分类入门——多种网络模型在手写数字识别的应用
  3. PROFINET转Modbus连接西门子PLC与汇川变频器
  4. WPS会更改PPT的注册表
  5. onethink 报错乱码修复(网站搬家)
  6. 推荐系统中的MRR指标
  7. Kruskal-Wallis test
  8. Web3去中心化存储生态图景
  9. Unity3D 网络游戏框架(八、大小端问题)
  10. 蓝牙技术|蓝牙BLE促进物联网资产跟踪的发展