This is not a full binding to the rather large PCL API. Currently, the following parts of the API are wrapped
- I/O and integration; saving and loading PCD files
- sample consensus model fittting (RANSAC + others, cylinders, planes, common geometry)
The code tries to follow the Point Cloud API, and also provides helper function for interacting with numpy.
A minimal example (demonstrating the
import pcl p = pcl.PointCloud() p.from_file("C/table_scene_lms400.pcd") fil = p.make_statistical_outlier_filter() fil.set_mean_k (50) fil.set_std_dev_mul_thresh (1.0) fil.filter().to_file("inliers.pcd")
The main limitation of the current implementation is that is only supports
PointXYZ point type. PCL is a heavily optimized and templated API,
and the best method for creating specializations correspoinding to the correct point type
in a dynamic language like Python is not clear.
Nevertheless, the binding is already capable of smoothing, filtering and the fitting of geometries in arbitary 3D point cloud data.
The binding is written using Cython, and is one of the more complex
bindings I could find.
The current release has been tested with
- pcl 1.5.1
- Cython 0.16
although it should work with more recent releases.
I would be interested in adressing the specialization issues using the recently added and improved fused types support in Cython.
This work has been supported by, and is currently in production use at, Strawlab.