2013-03-25 18 views
5


5 fotoğrafım var ve her görüntüyü 1d dizisine dönüştürmek ve vektör olarak bir matrise yerleştirmek istiyorum.
Her vektörü tekrar görüntüye dönüştürmek istiyorum.
Image (png) 'ye Matris Ve Sonra 1D Dizisine Dönüştürme

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

Ben Numpy tüm özellikleri aşina değilim ve kullanabilirsiniz orada diğer araçları olmadığını merak etti.
Teşekkürler.

cevap

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

no'lu bölüme yardım etmeyi umuyorum, vektörü normalleştirmek istiyorum (vektör olarak) doğrusal normalize mi yoksa histogram eşitlemesi mi yapmalıyım? ve bir soru daha, kodun özünü işlev olarak kullanabilirim ve eğer bir dizi resim varsa, hepsini büyük bir matrise koyarım ve her görüntü bir vektör mü? –

+0

Lütfen normalleştirme için kullandığınız kodu gösterin. Neden bir matriste 5 resim yerleştirmek istediğinizi ve bunları normalleştirmeyi nasıl amaçladığınızı anlamıyorum. – unutbu

+1

Çünkü yüz uzayını yapmak istiyorum, her bir vektör bir görüntüdür, histogram eşitlemesini kullanmak istiyorum çünkü yüz tanımanın nasıl çalıştığını öğrenmek istiyorum! –

2

Bu kodu kullanarak 1D görüntü dizisine 2D dönüştürmek için kullanılabilir:

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); 

ama daha sonra kodda, aynı zamanda o değil dikkat 2D geri nasıl değiştirileceği henüz bilmiyoruz Tüm ithal kütüphaneler gereklidir, umarım bu bölümdeki #

İlgili konular