python点云处理模块_python版本的点云数据处理库

python点云处理模块_python版本的点云数据处理库
⼀、Open3D
A Modern Library for 3D Data Processing,Intel出品,MIT协议。
Open3D是⼀个⽀持3D数据处理软件快速开发的开源库。Open3D使⽤C++和Python公开了⼀组精⼼选择的数据结构和算法。后端经过⾼度优化,并设置为并⾏化。Open3D的依赖项较少,可在不同的平台上编译与布置。
Open3D侧重于三维数据的可视化与整体处理算法。想学习的同学可百度“Open3D学习计划”。
分享给有需要的⼈,代码质量勿喷。
importopen3daso3d
importnumpyasnp
frommatplotlibimportpyplotasplt
# read PC
pcd = ad_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 = _cmap("tab20")(labels / (max_labelifmax_label >0else1))
colors[labels <0] =0
# 可视化
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绘图变得简单,可⽤于⼤型/复杂数据⼏何.234mm
印花胶浆
PyVista(以前称为vtki)是可视化⼯具包(VTK)的帮助程序模块,它通过NumPy和直接数组访问采⽤了与VTK接⼝不同的⽅法。该软件包提供了Pythonic的,⽂档齐全的界⾯,该界⾯公开了VTK强⼤的可视化后端,以促进对空间参考数据集的快速原型制作,分析和可视化集成。该模块可⽤于演⽰⽂稿和研究论⽂的科学绘图,以及其他与⽹格相关的Python模块的⽀持模块。
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。
分享给有需要的⼈,代码质量勿喷。
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等库衔接较好。
分享给有需要的⼈,代码质量勿喷。
frompyntcloudimportPyntCloud
importopen3daso3d
# io
cloud = PyntCloud.from_file("F:/test.ply")
# structures
kdtree_id = cloud.add_structure("kdtree")
# neighbors
k_neighbors = _neighbors(k=5, kdtree=kdtree_id)
# scalar_fields
ev = cloud.add_scalar_field("eigen_values", k_neighbors=k_neighbors)
# filters
f = _filter("BBOX", min_x=0.1, max_x=0.8)
# FROM Open3D
original_triangle_mesh = ad_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 = _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库侧重于点云的读写、修改编辑处理。
分享给有需要的⼈,代码质量勿喷。
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.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⽂件。
分享给有需要的⼈,代码质量勿喷。
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],
# 筛选路⾯点
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⽂件。
Point Cloud Utils (pcu) - A Python library for common tasks on 3D point clouds
挺实⽤。
安装:pip install git+git:///fwilliams/point-cloud-utils
pptk(Point Processing Toolkit)是⽤于可视化和处理⼆三维点云的python包。⽬前,其具有以下功能:(1)点云查看,可接受任何3列numpy数组作为输⼊;离子风机aryang
(2)基于Octree的LOD点云渲染可视化;
(3)⽀持点选,⽤于检查和注释点数据;
(4)并⾏化的点KD-tree;
(5)基于点云邻域PCA的法线估计。
分享给有需要的⼈,代码质量勿喷。
importpptk
# Create 100 random points
xyz = pptk.rand(200,3)

本文发布于:2024-09-22 01:44:12,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/102772.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:可视化   处理   数据   数据结构   读写
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议