我用Velodyne-128以.bin格式收集了激光雷达数据。我需要将其转换为pcd格式。我使用NVIDIA Driveworks进行数据处理,但是没有将激光雷达二进制数据转换为pcd的工具。
因此,有没有一种方法可以将激光雷达的二进制数据转换为pcd格式?
答案 0 :(得分:0)
我从github找到了一个代码(参考如下):
import numpy as np
import struct
from open3d import *
def convert_kitti_bin_to_pcd(binFilePath):
size_float = 4
list_pcd = []
with open(binFilePath, "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 = PointCloud()
pcd.points = Vector3dVector(np_pcd)
return pcd
答案 1 :(得分:0)
以下是将激光雷达数据(.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)
根据示例here,可以将其保存为以下文件:
import open3d as o3d
o3d.io.write_point_cloud("copy_of_fragment.pcd", pcd)
答案 2 :(得分:0)
尽管所有其他解决方案可能都是正确的,但我一直在寻找一个简单的仅用于numpy的版本。在这里:
$fullyQualifiedClassName = '\\System\\App\\Model\\Product';
$object = new $fullyQualifiedClassName();
$objectRepository = $this->entityManager->getRepository($fullyQualifiedClassName);
$results = $objectRepository->findAll();
print_r($results);