2014-02-21 2 views
1

Поскольку у меня нет больших знаний в opencv, вопрос может быть глупым. В любом случае, мой вопрос: у меня есть набор из 30 изображений, и я вычисляю среднее значение красных, зеленых и синих каналов для всех 30 изображений и сохранял их в трех разных списках, теперь я хочу добавить эти 3 разных списка значения в 3D массив как:Как добавить значения списка в 3D-массив - python и opencv

[B_mean, 
G_mean, 
R_mean] 

Это мои БГРЫ средних значений:

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

Это звучит, как вы хотите 2d массив, т.е. (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) 
Смежные вопросы