2013-03-25 4 views
5


5 개의 그림이 있고 각각의 이미지를 1 차원 배열로 변환하여 벡터로 매트릭스에 넣고 싶습니다.
각 이미지를 다시 이미지로 변환 할 수 있기를 원합니다.
이미지를 변환하여 1D 배열로 변환

img = Image.open('orig.png').convert('RGBA') 
a = np.array(img) 

나는 NumPy와의 모든 기능에 익숙하지 않은 그리고 난 사용할 수 있습니다 다른 도구 궁금.
감사합니다.

답변

15
import numpy as np 
from PIL import Image 

img = Image.open('orig.png').convert('RGBA') 
arr = np.array(img) 

# record the original shape 
shape = arr.shape 

# make a 1-dimensional view of arr 
flat_arr = arr.ravel() 

# convert it to a matrix 
vector = np.matrix(flat_arr) 

# do something to the vector 
vector[:,::10] = 128 

# reform a numpy array of the original shape 
arr2 = np.asarray(vector).reshape(shape) 

# make a PIL image 
img2 = Image.fromarray(arr2, 'RGBA') 
img2.show() 
+0

섹션에서 벡터에 무언가를하십시오. 이미지를 벡터로 정규화하고 싶습니다. 선형 정규화 또는 히스토그램 평준화가 필요합니까? 그리고 하나 더 질문, 함수의 코드 조각을 사용할 수 있습니다, 그리고 만약 내가 어떻게 모든 하나의 큰 매트릭스와 모든 이미지 벡터에 넣어 이미지 배열을 가지고? –

+0

정규화에 사용하는 코드를 표시하십시오. 나는 왜 당신이 하나의 매트릭스에 5 개의 이미지를 놓고 싶은지, 그리고 그것을 어떻게 정규화하고자하는지 이해하지 못합니다. – unutbu

+1

왜냐하면 내가 얼굴 인식을하는 법을 배우고 싶기 때문에 얼굴 공간을 만들고 싶기 때문에 각 벡터가 이미지이기 때문에 히스토그램 평준화를 사용하고 싶습니다! –

2

나는이 코드를 사용하여 1D 이미지 배열로 2D를 변환하는 데 사용 :

import numpy as np 
from scipy import misc 
from sklearn.decomposition import PCA 
import matplotlib.pyplot as plt 

face = misc.imread('face1.jpg'); 
f=misc.face(gray=True) 
[width1,height1]=[f.shape[0],f.shape[1]] 
f2=f.reshape(width1*height1); 

을하지만 나중에 코드에서, 또한 그 것은 아닙니다 2D로 다시 변경하는 방법을 아직 모른다 가져온 모든 라이브러리가 필요합니다. 도움이 되었기를 바랍니다.

관련 문제