2014-02-21 2 views
1

opencv에 대한 많은 지식이 없으므로 어리석은 질문 일 수 있습니다. 어쨌든 내 질문은 30 세트의 이미지가 있고 30 개의 이미지 모두에 대한 빨강, 초록, 파랑 ​​채널의 평균을 계산하고이를 3 개의 다른 목록에 저장 했으므로 지금 내가 원하는 것은이 3 개의 다른 목록을 추가하는 것입니다. 같은 차원 배열에 값 :목록의 값을 3D 배열에 추가하는 방법 - python과 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

그것은 소리. 3d 배열은 (2, 3, 30)과 같은 모양을 갖습니다. –

답변

0

행과 열만있는 경우 실제로는 2 차원 배열입니다.

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

이이 경우에 RGB의 3 쌍 (3 1, 2)의리스트를 작성한다.

이 질문을 다시 읽고 나면, 더 구체적인 솔루션 (색상의 세 가지 목록을 제공) 될 수 편집 :

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

이것은 당신이 다차원 배열을 초기화하는 방법입니다 파이썬.

편집 : 한 번만 쓰는 것이 아니라면 numpy를 사용하는 것이 좋습니다.

1

그냥 numpy.array를 사용하면 2 차원 배열, 즉 (3, 30) 배열을 원하는처럼

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)