【问题标题】:How to convert a Numpy array (Rows x Cols) to an array of XYZ coordinates?如何将 Numpy 数组(Rows x Cols)转换为 XYZ 坐标数组?
【发布时间】:2016-12-19 09:41:17
【问题描述】:

我有一个来自相机的输入数组(灰度图像),如下所示:

[
[0.5, 0.75, 0.1, 0.6], 
[0.3, 0.75, 1.0, 0.9] 
]

实际尺寸 = 434x512

我需要一个 XYZ 坐标列表的输出:

即[[x,y,z],[x,y,z],...]

[[0,0,0.5],[1,0,0.75],[2,0,0.1],[3,0,0.6],[0,1,0.3],[1,1,0.75],[2,1,1.0],[3,1,0.9]]

有没有使用 Numpy 的有效方法来做到这一点?

【问题讨论】:

  • 您的预期输出背后的逻辑是什么?一种展示这一点的好方法是使用迄今为止您自己尝试过的代码更新您的问题。
  • 逻辑是获取像素强度/深度数据并将其绘制在 pyqt 3d 散点图中。我的尝试并没有让我走得太远..

标签: numpy data-conversion


【解决方案1】:

这是一种方法-

m,n = a.shape
R,C = np.mgrid[:m,:n]
out = np.column_stack((C.ravel(),R.ravel(), a.ravel()))

示例运行 -

In [45]: a
Out[45]: 
array([[ 0.5 ,  0.75,  0.1 ,  0.6 ],
       [ 0.3 ,  0.75,  1.  ,  0.9 ]])

In [46]: m,n = a.shape
    ...: R,C = np.mgrid[:m,:n]
    ...: out = np.column_stack((C.ravel(),R.ravel(), a.ravel()))
    ...: 

In [47]: out
Out[47]: 
array([[ 0.  ,  0.  ,  0.5 ],
       [ 1.  ,  0.  ,  0.75],
       [ 2.  ,  0.  ,  0.1 ],
       [ 3.  ,  0.  ,  0.6 ],
       [ 0.  ,  1.  ,  0.3 ],
       [ 1.  ,  1.  ,  0.75],
       [ 2.  ,  1.  ,  1.  ],
       [ 3.  ,  1.  ,  0.9 ]])

In [48]: out.tolist() # Convert to list of lists if needed
Out[48]: 
[[0.0, 0.0, 0.5],
 [1.0, 0.0, 0.75],
 [2.0, 0.0, 0.1],
 [3.0, 0.0, 0.6],
 [0.0, 1.0, 0.3],
 [1.0, 1.0, 0.75],
 [2.0, 1.0, 1.0],
 [3.0, 1.0, 0.9]]

【讨论】:

    猜你喜欢
    • 2020-07-20
    • 2020-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多