Library / SDK
PointCloudLibrary/pcl avatar
PointCloudLibrary/pcl

PCL: the C++ Point Cloud Library for 2D and 3D processing

Point Cloud Library (PCL)

11,135 stars4,698 forksC++NOASSERTION

At a glance

What is it?
PCL, the Point Cloud Library, is a large BSD-licensed C++ library for point cloud processing, with modules for filtering, feature estimation, registration, segmentation, surface reconstruction and visualization. It is a mature, heavy dependency aimed at robotics and 3D perception, not a lightweight package.
Who is it for?
Adopt PCL if you build 3D perception or robotics software in C++ and need established, broad point cloud algorithms, filtering, registration, segmentation, surface reconstruction and more, in one library. Do not choose it for quick Python prototyping or when you need only a couple of operations, where Open3D is lighter and easier.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository last received commits 5 days ago.
What is it written in?
Mainly C++, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What PCL provides and who uses it

The Point Cloud Library is a comprehensive C++ library for working with 2D and 3D point clouds, the data that LiDAR sensors, depth cameras and 3D scanners produce. It gathers a broad set of algorithms under one project, and the repository's module folders read like a map of the field: filters, features, registration, segmentation, surface, kdtree, octree, sample_consensus, recognition, tracking and visualization, plus GPU and CUDA modules. The audience is robotics engineers, computer-vision researchers and anyone building 3D perception who needs established implementations of point cloud operations rather than writing them from scratch. PCL is a foundational library in this space, cited in academic work and used across robotics stacks, and its scope is its identity: it aims to cover the common point cloud pipeline end to end in native C++.

A modular pipeline across many algorithm families

The design is modular, which is what lets a project pull in only the parts it needs. The registration module handles aligning point clouds, for instance iterative closest point; features estimates descriptors such as surface normals; filters removes noise and downsamples; segmentation and sample_consensus separate structure like planes and objects; surface reconstructs meshes; and kdtree and octree provide the spatial search structures the rest depend on. A recent release added support for nanoflann as a faster alternative to FLANN for neighborhood searching, which speeds up operations like ICP and normal estimation, a concrete example of the library tuning its performance-critical core. The GPU and CUDA modules push some of this onto the graphics card. This breadth is the reason PCL is reached for, and also why it is a substantial dependency rather than a small utility.

Getting and building PCL

PCL is a C++ library built with CMake, and the README points to the project's own downloads and documentation rather than a one-line install, because how you get it depends on your platform. In practice you either install a prebuilt package through a system package manager or a C++ dependency manager, or you build from source with CMake against its dependencies. The core dependencies are themselves heavyweight, including Boost, Eigen, FLANN, and VTK for visualization, so setting PCL up is a real step rather than a quick add. The canonical starting point is the pointclouds.org site and the tutorials it links, which walk through building a first program against a specific module. Because it is native C++ with no official Python binding, integrating it means compiling and linking against your own build system.

To build from source, clone the repository and follow the platform guide:

bash
git clone https://github.com/PointCloudLibrary/pcl.git

The README links to separate guides for Linux, macOS, and Windows at pcl-tutorials.readthedocs.io, each covering the full dependency setup and CMake configuration for that platform.

Where PCL is heavy going

The limitations are the flip side of its scope. PCL is large and its dependency chain, Boost, Eigen, FLANN, VTK and optionally CUDA, makes building and configuring it a nontrivial task, especially across platforms and compiler versions, and release notes routinely include fixes for the newest compilers precisely because that surface is broad. It is C++ only, with no official Python bindings, so Python users rely on community wrappers or an alternative library. The learning curve is steep: the API is extensive and the algorithms assume familiarity with 3D geometry and the parameters each stage needs. And its very completeness means more to compile than a focused tool. For a project that needs only one or two operations, that weight can be hard to justify, which is exactly where a lighter alternative competes.

PCL versus Open3D

The most common alternative is Open3D, a newer library for 3D data. The difference is one of maturity, breadth and interface. PCL is older and broader, with deep coverage across many algorithm families and a long track record in robotics, but it is C++ first and heavy to build. Open3D offers a Python-first API that is far easier to pick up and prototype with, and lighter to install, but it covers fewer specialized algorithms than PCL's full catalog. The choice tends to follow the work: reach for Open3D when you want fast Python prototyping and its coverage is enough, and for PCL when you need a specific algorithm it implements, are already in a C++ or robotics stack, or want the breadth that PCL's modules provide. They are complementary tools aimed at overlapping but distinct needs.

BSD license and maintenance

PCL is released under the BSD license, a permissive license suitable for commercial and academic use, so reuse is straightforward, though the repository's license metadata shows as unrecognized and you should read LICENSE.txt to confirm terms for your case. For academic use, PCL asks that you cite the 2011 ICRA paper by Radu Bogdan Rusu and Steve Cousins, titled "3D is here: Point Cloud Library (PCL)". The README provides the full BibTeX entry. The last push was on 2026-09-11, and the project continues to ship releases, with the 1.15.1 release adding the nanoflann search option and the usual round of speed improvements and compiler fixes, so it remains actively maintained. Weigh PCL as a mature foundation: plan for a real build against heavyweight dependencies, start from the pointclouds.org tutorials for a first program, and consider whether your project needs its breadth or would be better served by a lighter, Python-first alternative for the specific operations you require.

Editorial conclusion

Adopt PCL if you build 3D perception or robotics software in C++ and need established, broad point cloud algorithms, filtering, registration, segmentation, surface reconstruction and more, in one library. Do not choose it for quick Python prototyping or when you need only a couple of operations, where Open3D is lighter and easier. Plan for a CMake build against Boost, Eigen, FLANN and VTK, start from the pointclouds.org tutorials, and read LICENSE.txt to confirm the BSD terms for your use.

Frequently asked questions

What is PCL used for?

PCL, the Point Cloud Library, is a C++ library for processing 2D and 3D point clouds from LiDAR, depth cameras and scanners, with modules for filtering, feature estimation, registration, segmentation, surface reconstruction and visualization.

Does PCL have Python bindings?

There are no official Python bindings. PCL is a C++ library built with CMake, so Python users rely on community wrappers or an alternative such as Open3D. Integrating PCL means compiling and linking against your build system.

How is PCL different from Open3D?

PCL is older, broader and C++ first, with deep algorithm coverage but a heavy build. Open3D is a lighter, Python-first library that is easier to prototype with but covers fewer specialized algorithms.

Official sources

  1. Issues
  2. PointCloudLibrary/pcl on GitHub
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/pointcloudlibrary-pcl.svg)](https://hysenlabs.com/projects/pointcloudlibrary-pcl)