3D point cloud shape classification

I have a 3D scanner which gives me an output of a point cloud + normals. What I am trying to do is use openCV to find planes and shapes in the scan automatically. Is there any way to do so?

just curious, how does your 3d scanner work, and what are you trying to achieve here ?

there will be plane & sphere segmentation methods in the upcoming 5.x branch

and, ofc, pcl has a few more things here

The scanner is a hand scanner (SMART F6), which outputs a point cloud.
What I’m trying to achieve is to plan robotic paths to cover the different shapes and planes which comprise the scanned part. For example, a table with a cylinder above it (center of the cylinder is vertical to the table). The idea is to understand that there is a rectangle shape (the table) and a cylinder pointing upwards. The table can be covered by dividing up the area with a grid and connecting the grid cells to comprise a path. The cylinder can be divided up by slices according to some delta in the Z direction. I’m looking to do something like this?
Any ideas?

What I’m trying to do, for example is to get the same result as I got on the sides of the cube.
The colors represent surfaces found in the point cloud. The problem is that the cylinder is also a surface but it is represented by many surfaces.
I want to have the cylinder as one color, and also find the edges between the different surfaces as well as I did on the cube.
Thanks a lot!

The run-time library ‘FindSurface’ is available on GitHub for determining the shape, size, position, orientation of object surfaces in point cloud.

The supported object surfaces include plane, sphere, cylinder, cone, torus.

They are automatically in real-time segmented, extracted and measured by selecting a seed point.

The source codes of demo Apps are also available.

The supported platforms include Windows, UWP (HoloLens2), Linux, Android, iOS.

You can test the functionality of FindSurface by using a web browser.