This is a small python binding to the pointcloud <http://pointclouds.org/>
_ library.
Currently, the following parts of the API are wrapped (all methods operate on PointXYZ)
point types
- I/O and integration; saving and loading PCD files
- segmentation
- SAC
- smoothing
- filtering
- registration (ICP, GICP, ICP_NL)
The code tries to follow the Point Cloud API, and also provides helper function for interacting with NumPy. For example (from tests/test.py)
import pcl
import numpy as np
p = pcl.PointCloud(np.array([[1, 2, 3], [3, 4, 5]], dtype=np.float32))
seg = p.make_segmenter()
seg.set_model_type(pcl.SACMODEL_PLANE)
seg.set_method_type(pcl.SAC_RANSAC)
indices, model = seg.segment()
or, for smoothing
import pcl
p = pcl.load("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")
Point clouds can be viewed as NumPy arrays, so modifying them is possible using all the familiar NumPy functionality:
import numpy as np
import pcl
p = pcl.PointCloud(10) # "empty" point cloud
a = np.asarray(p) # NumPy view on the cloud
a[:] = 0 # fill with zeros
print(p[3]) # prints (0.0, 0.0, 0.0)
a[:, 0] = 1 # set x coordinates to 1
print(p[3]) # prints (1.0, 0.0, 0.0)
More samples can be found in the examples directory <https://github.com/strawlab/python-pcl/tree/master/examples>
,
and in the unit tests <https://github.com/strawlab/python-pcl/blob/master/tests/test.py>
.
This work was supported by Strawlab <http://strawlab.org/>
_.
- Pull and build docker container on your local computer.
cd docker
bash start_geek.sh
- Into docker container and run an example :
cd docker
bash into_geek.sh
# run example by keypoint
python3 examples/3dharris.py