pyntcloud is a Python library for working with 3D point clouds.

Project README

============================= Making point clouds fun again

.. image:: :target: :alt: LGTM Code quality

.. image:: :target: :alt: Github Actions C.I.

.. image:: :target: :alt: Documentation Status

.. image::

.. image:: :target: :alt: Launch Binder

.. image:: :alt: pyntcloud logo

pyntcloud is a Python 3 library for working with 3D point clouds leveraging the power of the Python scientific stack.

  • Examples_ (We encourage you to try out the examples by launching Binder <>_.)
  • Documentation_

.. _Examples: .. _Documentation:


.. code-block:: bash

conda install pyntcloud -c conda-forge


.. code-block:: bash

pip install pyntcloud

Quick Overview

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:

  • Load a PLY point cloud from disk.
  • Add 3 new scalar fields by converting RGB to HSV.
  • Build a grid of voxels from the point cloud.
  • Build a new point cloud keeping only the nearest point to each occupied voxel center.
  • Save the new point cloud in numpy's NPZ format.

With the following concise code:

.. code-block:: python

from pyntcloud import PyntCloud

cloud = PyntCloud.from_file("some_file.ply")


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)


Integration with other libraries

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 <>_

.. code-block:: python

import open3d as o3d
from pyntcloud import PyntCloud

# FROM Open3D
original_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 <>_

.. code-block:: python

import pyvista as pv
from pyntcloud import PyntCloud

# FROM PyVista
original_point_cloud ="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)
Open Source Agenda is not affiliated with "Pyntcloud" Project. README Source: daavoo/pyntcloud