如何导出点云?

How to export a point cloud?

所以我正在研究 3D 扫描仪,并制作了一些 3D 重建代码。
这是 code.
但是因为我比较菜鸟,我不确定如何导出点云,然后将其用于 3d 建模程序,如 blender。

您可以将 PLY format and OBJ format 导入到均支持 ASCII 文件的 Blender。使用适当的 headers 写出适当的 ASCII 文件,只要格式正确,支持 PLY 和 OBJ 的程序就应该可以读取它们。

或者,您可以使用 Python's CSV library 将数据保存为 CSV 文件,然后使用 Blenders Python API.

将数据作为 CSV 文件导入 Blender

如果没有 3D 重建结果的示例,我无法确定,但根据您链接到的代码,我认为您可以生成一个准备好导入到 Blender 的 .ply 文件,如下所示:

使用 https://github.com/daavoo/pyntcloud.

import numpy as np
import pandas as pd

from pyntcloud import PyntCloud

cloud = PyntCloud(pd.DataFrame(
    # same arguments that you are passing to visualize_pcl
    data=np.hstack((points, colors)),
    columns=["x", "y", "z", "red", "green", "blue"]))

cloud.to_file("output.ply")

正如 David de la Iglesia 所说,您可以使用 https://github.com/daavoo/pyntcloud 包。但是他这样做的方式颜色不起作用,因为它是浮点格式,因为它与坐标堆叠在一起。

d = {'x': points[:,0],'y': points[:,1],'z': points[:,2], 
             'red' : colors[:,0], 'green' : colors[:,1], 'blue' : colors[:,2]}
        
cloud = PyntCloud(pd.DataFrame(data=d))
cloud.to_file("output.ply")

矩阵“points”为 float 格式,“colors”为 uint8