pclpy:python的pcl
点云库(PCL)的Python绑定。
使用cppHeaderParser和pyBind11从头生成。
此库正在进行活动开发,API可能会更改。
所包含的模块可以工作,但测试不完整
案例仍然很常见。
目前只支持Windows和Python3.6x64。
欢迎投稿、发稿、评论!
动机
许多其他python库试图绑定pcl。
最流行的是python pcl,它使用cython。
虽然Cython非常强大,但绑定C++模板并不是其中之一。
它的优点(PCL大量使用模板)。
python pcl的结果是大量代码重复,这很难
维护和添加PCL类的特性以及不完整的绑定
和点类型。
使用PybDun11,直接使用C++。模板,boost::smart_ptr和
缓冲协议是实现起来更简单的例子。
目前的结果非常有希望。PCL的很大一部分被覆盖。
安装
使用Python 3.6 x64的Windows
pip install pclpy
当pip安装项目时,pclpy_dependencies作为一个需求安装。
这个简单的包只包含windows上所需的pcl dll,因此您没有
下载或构建PCL版本。
Linux
暂时不工作。欢迎投稿!
功能实现所有点类型(由默认msvc编译标志指定的点类型)
您可以使用cloud.x或cloud.xyz将点云数据视为numpy数组。
boost::shared_ptr由pybind11处理,因此它在python级别完全抽象化了
用于读取/写入LAS文件的Laspy集成
示例
您可以使用更高级的pythonic api,也可以使用pcl api上的包装器。
包装器意味着尽可能接近原始PCL C++API。
使用更高级别的API:importpclpy# read a las filepoint_cloud=pclpy.read("street.las","PointXYZRGBA")# compute mlsoutput=point_cloud.moving_least_squares(search_radius=0.05,compute_normals=True,num_threads=8)
或者pcl api上的包装器:importpclpyfrompclpyimportpclpoint_cloud=pclpy.read("street.las","PointXYZRGBA")mls=pcl.surface.MovingLeastSquaresOMP.PointXYZRGBA_PointNormal()tree=pcl.search.KdTree.PointXYZRGBA()mls.setSearchRadius(0.05)mls.setPolynomialFit(False)mls.setNumberOfThreads(12)mls.setInputCloud(point_cloud)mls.setSearchMethod(tree)mls.setComputeNormals(True)output=pcl.PointCloud.PointNormal()mls.process(output)
您可以看到包装器非常接近C++版本:// C++ versionpcl::PointCloud::Ptrpoint_cloud(newpcl::PointCloud());pcl::io::loadPCDFile("bunny.pcd",*point_cloud);pcl::MovingLeastSquaresOMPmls;pcl::search::KdTree::Ptrtree(newpcl::search::KdTree);mls.setSearchRadius(0.05);mls.setPolynomialFit(false);mls.setNumberOfThreads(12);mls.setInputCloud(point_cloud);mls.setSearchMethod(tree);mls.setComputeNormals(true);pcl::PointCloudoutput;mls.process(output);
模块二维
普通
几何学
功能
过滤器
IO
kdtree
关键点
八叉树
认可度
样本一致性
搜索
分段
立体声
表面
跟踪
可视化
暂时跳过这些模块毫升
人
离开核心
注册
不在PCL Windows版本中的每个模块(GPU、CUDA等)
未实现
(见github issues
以及generators/config.py中的what to skip部分
建造
使用Python 3.6 x64的Windows
PCL_ROOT环境变量必须设置为PCL的安装目录
关于要求:
从Github(2.3dev版本)安装PyBind11它包含一个必要的错误修复程序
使用generate_pybind11_bindings.py生成模块
PCL版本中缺少一个文件,您应该从github repo中获取该文件:2d/impl/kernel.hpp
由于占用大量内存,必须使用x64版本的cl.exe构建(请参见setup.py中的解决方法)
python setup.py安装
有用的setup.py参数:
--msvc mp build应启用多进程生成
--msvc no code link使链接速度更快(不用于发行版,请参阅setup.py说明)
--使用cl使用clcache缓存msvc生成(必须安装)
--调试以在调试模式下生成
路线图尽可能多地包装PCL
更多测试
应用程序上的CI
在Linux上运行
欢迎加入QQ群-->: 979659372
推荐PyPI第三方库