Как я могу вывести геометрию PointCloud open3d как файл .pcd?
Я конвертирую данные лидара (в формате.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
Как я могу вывести геометрию PointCloud open3d как файл.pcd?
1 ответ
Решение
Вы пробовали по умолчанию open3d.io.write_point_cloud()
функция?
В соответствии с приведенным здесь примером вы можете использовать его, как показано ниже:
import open3d as o3d
o3d.io.write_point_cloud("copy_of_fragment.pcd", pcd)