2016-11-09 5 views
1

RGBイメージをブロック8x8 = 64(ブロック内のピクセル)に分割し、ブロックからピクセルの色を抽出します。私は、ブロックの8×8に画像を分けていますイメージをブロックに分割してピクセルの色を見つける方法

w, h = img.size # width, height of image 
bw, bh = 8, 8 # block size 
img = Image.open('anyimage.JPG') 

img = np.array(img) 

sz = img.itemsize 
shape = (h-bh+1, w-bw+1, bh, bw 
strides = (w*sz, sz, w*sz, sz) 
blocks = np.lib.stride_tricks.as_strided(img, shape=shape, strides=strides) 

print blocks[1,1] 

私はブロックでこの値を取得する:

[[169 185 147 170 186 149 170 187] 
[139 161 122 140 162 122 140 162] 
[131 135 113 131 135 118 135 142] 
[170 186 147 170 186 147 170 188] 
[142 164 124 142 164 122 140 162] 
[136 138 113 137 141 114 138 142] 
[174 191 148 174 191 147 173 190] 
[142 164 126 144 166 125 143 165]] 

ブロックからすべてのピクセルの色を抽出するためにどのように?

答えて

0

あなたはタプルの形で、all_pixelへのすべてのピクセルを追加し

pixels = img.load() 

all_pixels = [] 
for x in range(block_width): #put your block width size 
    for y in range(block_height): #your block heigh size 
     cpixel = pixels[x, y] #reading elements from pixel on location (x,y) 
     all_pixels.append(cpixel) 

を試すことができます。たとえば

(111, 222, 255) #R-G-B 
+0

応答ありがとうございます。 img.getdata()を試してみましたが、特定のブロックピクセルの色が必要なイメージピクセルの色全体を返します。 – Streem

+0

申し訳ありませんが、私はあなたの目的によって少し混乱しています。期待した結果を出せますか? – dpw

+0

ありがとう、助けのためのdpw。私は画像をブロック8pixels x 8pixels = 1ブロックに64ピクセルに分割したい、私は前に投稿したコードで既にそれを行っている。各ブロックから、RGB(112,231,222)のピクセルの色をリストし、それを輝度に変換してピクセルの色の濃さを取得したいと思います。このようにします - (.299 *赤)+(.587 *緑)+ .114 *青)、各ブロックから色が出ると最も明るいブロックを探したい。しかし、私はブロックに画像を分割した瞬間、ブロックのピクセルコーディネーションだけで、ピクセルの色を取得する方法は?私の質問が、私の英語ではっきりと申し訳なく思ってくれることを願っています。 – Streem

関連する問題