2016-12-19 50 views
0

我有來自攝像機(灰度圖像)的輸入陣列,看起來像:如何將Numpy數組(行x Cols)轉換爲XYZ座標數組?

[ 
[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]] 

有什麼有效的方法可以做到THI使用Numpy?

+1

什麼是你期望的輸出背後的邏輯是什麼?一種很好的方式可以顯示您正在使用自己迄今爲止嘗試過的代碼更新您的問題。 – Kasramvd

+0

邏輯是採用像素強度/深度數據並將其繪製在pyqt 3d散點圖中。我的嘗試並沒有讓我走得很遠.. – Logic1

回答

2

這裏有一個方法 -

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]]