2014-02-21 71 views
1

正如我在OpenCV中沒有太多的知識,這個問題可能是愚蠢的。 無論如何,我的問題是,我有一組30個圖像,我計算了所有30幅圖像的紅色,綠色和藍色通道的均值,並將它們存儲在3個不同的列表中,現在我想要追加這3個不同的列表值成3D陣列爲:如何列表的價值附加到一個三維陣列 - 蟒蛇和OpenCV

[B_mean, 
G_mean, 
R_mean] 

這是我的BGR意味着值:

blue mean [25, 28, 66, 63, 59, 70, 64, 38, 33, 39, 22, 37, 48, 4, 13, 12, 6, 3, 22, 18, 23, 21, 22, 31, 38, 21, 34, 26, 21, 30] 
green mean [27, 29, 68, 66, 63, 69, 66, 45, 48, 41, 38, 41, 41, 22, 21, 9, 7, 25, 35, 28, 37, 36, 35, 32, 36, 20, 27, 24, 18, 25] 
read mean [25, 26, 70, 69, 71, 67, 66, 42, 45, 31, 40, 43, 37, 32, 33, 37, 30, 34, 34, 24, 28, 32, 30, 33, 36, 26, 24, 30, 24, 26] 

樣3行和30列。所以我怎麼得到這個?

謝謝!

+0

這聽起來像你想有一個二維數組,即(3,30)陣列。一個3d陣列將會有一個像(2,3,30)的形狀。 –

回答

0

它實際上是一個二維數組,如果你只有行和列。

mylist = [[1,2,3], [1,2,3]] 
mylist.append([1,2,3]) 

這將在這種情況下創建三個RGB對(1,2,3)的列表。

編輯

重新閱讀您的問題後,更具體的解決辦法是(給定的顏色三個列表):

mylist = [] 
for i in range(0, 30): 
    mylist.append([red[i], green[i], blue[i]]) 
0
matrix = [[mean for mean in chan] for chan in [red, green, blue]] 

這是你如何初始化多維數組在Python中。

編輯:我應該指出,使用numpy的是,除非你寫的東西一次性使用專用的首選方式。

1

只需使用numpy.array

import numpy as np 

red = range(0, 30) 
blue = range(10, 40) 
green = range(20, 50) 
array = np.array([red, green, blue]) 
print array.shape 
# (3, 30)