我希望这会让你身体健康。我对使用 3d 对象真的很陌生。我最近一直在使用对象检测算法(YOLO)。由于 Yolo 返回一个对象的边界框坐标,我们可以很容易地得到边界框的 (x,y) 坐标。然而最近,我在项目中添加了一个 TOF 相机,可以感知每个像素的深度(z 轴坐标)。所有这些数据都存储在相应的“.ply”中。我想获取 yolo 输出的每个边界框坐标的 z 轴值。
现在我的 .ply 文件显示了这个输出:
array([[-818.5 , -830.75, 1949.25],
[-748. , -814.5 , 1918.5 ],
[-704. , -806.75, 1905.25],
...,
[ 903.75, 790. , 1844.25],
[ 906.75, 789.5 , 1843. ],
[ 915. , 793.75, 1852.25]], dtype=float32)
我正在使用 python 的 plyfile 库从我的 .ply 文件中读取数据
这是我走了多远:
def read_ply(filename):
""" read XYZ point cloud from filename PLY file """
plydata = PlyData.read(filename)
x = np.asarray(plydata.elements[0].data['x'])
y = np.asarray(plydata.elements[0].data['y'])
z = np.asarray(plydata.elements[0].data['z'])
return np.stack([x,y,z], axis=1)
coors = read_ply("test.ply")
coors
此脚本读取给定的 .ply 文件并从 ply 文件中输出以下顶点 (x,y,z) 值:
array([[-818.5 , -830.75, 1949.25],
[-748. , -814.5 , 1918.5 ],
[-704. , -806.75, 1905.25],
...,
[ 903.75, 790. , 1844.25],
[ 906.75, 789.5 , 1843. ],
[ 915. , 793.75, 1852.25]], dtype=float32)
现在我想找到 YOLO 输出的边界框中存在的相应像素的 z 轴。