pyntcloud is a Python library for working with 3D point clouds.
MIT License
.. image:: https://github.com/daavoo/pyntcloud/workflows/pyncloud%20C.I./badge.svg :target: https://github.com/daavoo/pyntcloud/actions :alt: Github Actions C.I.
.. image:: https://readthedocs.org/projects/pyntcloud/badge/?version=latest :target: https://pyntcloud.readthedocs.io/en/latest/?badge=latest :alt: Documentation Status
.. image:: https://anaconda.org/conda-forge/pyntcloud/badges/version.svg :target: https://anaconda.org/conda-forge/pyntcloud
.. image:: https://mybinder.org/badge.svg :target: https://mybinder.org/v2/gh/daavoo/pyntcloud/master :alt: Launch Binder
.. image:: https://zenodo.org/badge/69888255.svg :target: https://zenodo.org/badge/latestdoi/69888255
.. image:: https://raw.githubusercontent.com/daavoo/pyntcloud/master/docs/images/pyntcloud_logo.png :alt: pyntcloud logo
pyntcloud is a Python 3 library for working with 3D point clouds leveraging the power of the Python scientific stack.
Binder <https://mybinder.org/v2/gh/daavoo/pyntcloud/master>
_.).. _Examples: https://github.com/daavoo/pyntcloud/tree/master/examples .. _Documentation: http://pyntcloud.readthedocs.io/en/latest/
.. code-block:: bash
conda install pyntcloud -c conda-forge
Or:
.. code-block:: bash
pip install pyntcloud
You can access most of pyntcloud's functionality from its core class: PyntCloud.
With PyntCloud you can perform complex 3D processing operations with minimum lines of code. For example you can:
With the following concise code:
.. code-block:: python
from pyntcloud import PyntCloud
cloud = PyntCloud.from_file("some_file.ply")
cloud.add_scalar_field("hsv")
voxelgrid_id = cloud.add_structure("voxelgrid", n_x=32, n_y=32, n_z=32)
new_cloud = cloud.get_sample("voxelgrid_nearest", voxelgrid_id=voxelgrid_id, as_PyntCloud=True)
new_cloud.to_file("out_file.npz")
pyntcloud offers seamless integration with other 3D processing libraries.
You can create / convert PyntCloud instances from / to many 3D processing libraries using the from_instance
/ to_instance
methods:
Open3D <https://www.open3d.org>
_.. code-block:: python
import open3d as o3d
from pyntcloud import PyntCloud
# FROM Open3D
original_triangle_mesh = o3d.io.read_triangle_mesh("diamond.ply")
cloud = PyntCloud.from_instance("open3d", original_triangle_mesh)
# TO Open3D
cloud = PyntCloud.from_file("diamond.ply")
converted_triangle_mesh = cloud.to_instance("open3d", mesh=True) # mesh=True by default
PyVista <https://docs.pyvista.org>
_.. code-block:: python
import pyvista as pv
from pyntcloud import PyntCloud
# FROM PyVista
original_point_cloud = pv.read("diamond.ply")
cloud = PyntCloud.from_instance("pyvista", original_point_cloud)
# TO PyVista
cloud = PyntCloud.from_file("diamond.ply")
converted_triangle_mesh = cloud.to_instance("pyvista", mesh=True)