对于 python 中的给定点 ( x, y ),如何从 ply 文件中获取 z-axis 坐标?
How do I get z-axis coordinate from ply file for a given point ( x, y ) in python?
希望您身体健康。
我对使用 3d objects 真的很陌生。我最近一直在使用 Object 检测算法 (YOLO)。由于 Yolo returns 一个 object 的边界框坐标,我们可以很容易地得到边界框的 (x,y) 坐标。但是最近,我在项目中添加了一个TOF相机,可以感测每个像素的dept(z-axis坐标)。所有这些数据都存储在相应的“.ply”中。我想获得 yolo 输出的每个 bounding-box 坐标的 z-axis 值。
现在我的 .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-axis。
终于明白我做错了什么了。
这是正确的工作代码。干杯!
#Enter your x & y coors to get corresponding z-axis value
x = 2300
y = 1822
xy = np.array([x, y])
z = coors[np.all(np.isclose(coors[:, :2], xy), axis=1), 2][0]
print("x= {} y= {} z= {}".format(x, y, z))
希望您身体健康。 我对使用 3d objects 真的很陌生。我最近一直在使用 Object 检测算法 (YOLO)。由于 Yolo returns 一个 object 的边界框坐标,我们可以很容易地得到边界框的 (x,y) 坐标。但是最近,我在项目中添加了一个TOF相机,可以感测每个像素的dept(z-axis坐标)。所有这些数据都存储在相应的“.ply”中。我想获得 yolo 输出的每个 bounding-box 坐标的 z-axis 值。
现在我的 .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-axis。
终于明白我做错了什么了。 这是正确的工作代码。干杯!
#Enter your x & y coors to get corresponding z-axis value
x = 2300
y = 1822
xy = np.array([x, y])
z = coors[np.all(np.isclose(coors[:, :2], xy), axis=1), 2][0]
print("x= {} y= {} z= {}".format(x, y, z))