Как вывести геометрию open3d PointCloud в виде файла .pcd? - PullRequest
0 голосов
/ 06 марта 2020

Я конвертирую лидарные данные (в формате .bin) в формат .pcd со следующим кодом

with open ("lidar_velodyne64.bin", "rb") as f:
    byte = f.read(size_float*4)
    while byte:
        x,y,z,intensity = struct.unpack("ffff", byte)
        list_pcd.append([x, y, z])
        byte = f.read(size_float*4)
np_pcd = np.asarray(list_pcd)
pcd = o3d.geometry.PointCloud()
v3d = o3d.utility.Vector3dVector
pcd.points = v3d(np_pcd)

И пытаюсь вывести 'pcd' в виде файла .pcd:

with open("pcd_output.pcd", "wb") as pcd2:
    pickle.dump(pcd,pcd2)

Однако я получил следующую ошибку:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-16-cde8b419d929> in <module>
      1 with open("pcd_output.pcd", "wb") as pcd2:
----> 2     pickle.dump(pcd,pcd2)

TypeError: can't pickle open3d.open3d.geometry.PointCloud objects

Как вывести геометрию open3d PointCloud в виде файла .pcd?

1 Ответ

0 голосов
/ 06 марта 2020

Вы пробовали функцию по умолчанию open3d.io.write_point_cloud()?

В соответствии с примером здесь , вы можете использовать его, как показано ниже:

import open3d as o3d
o3d.io.write_point_cloud("copy_of_fragment.pcd", pcd)
...