Search code examples
pythonpoint-cloudsopen3dcupy

Open3D can't call function 'read_point_cloud'/Module 'Open3D' has no attribute 'read_point_cloud'


So I cloned a git repository which is registrating point clouds using probabilistic methods such as GMMs (Gaussian-Mixture-Models) but also incorporates Open3D. Because the registration is running on the GPU instead of the CPU I needed to install CUDA. Mainly because the repository imports the CuPy-Package which in turn also requires CUDA. Because I had some problems installing and building the latest versions of CuPy, I solved it by just using an older version, in my case version 10.2, which seems to run on my computer and on my GPU (it's a GTX 1050). After that CuPy was successfully imported into the project. Installation and import of Open3D worked also fine. However, after running a python test-file which is registering two point clouds, I got a weird error message in the terminal, which also crashed the program. It says Module 'Open3D' has no attribute 'read_point_cloud'

The corressponding code line is this: source = o3.read_point_cloud(filepath) Now, I made some research by reading the Open3D documentation and I found out that read_point_cloud is an already provided default method in the Open3D library, in older versions, as well as in its current version 0.18.0. It is also the same version which I installed via pip previously. Could it somehow be related to the CUDA problem I described above or am I missing something here?


Solution

  • The right way to load a pointcloud is to use either

    • open3d.io.read_point_cloud(filepath) if using legacy API which returns open3d.geometry.PointCloud, or
    • open3d.t.io.read_point_cloud(filepath) if using tensor API which returns open3d.t.geometry.PointCloud.

    The t stands for tensor, which supports use of cuda. The legacy API used eigen which didnt support computation on gpu, hence led to the development of tensor based api.

    Furthermore, you can check Multi-Scale ICP on CUDA, to do registration on gpu. It does not provide GMM but can be a good start.