1
我想将RGB图像分成块8x8 = 64(块中的像素)并从块中提取像素颜色。我已经分割图像成块的8x8:如何将图像分成块并找到像素颜色
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]]
如何从块提取所有像素的颜色?
感谢您的回复。我试过img.getdata(),但它会返回整个图像像素的颜色,我需要特定的块像素颜色。 – Streem
我很抱歉,但我很困惑你的目标。你能提供一些预期的结果吗? – dpw
谢谢,dpw求助。我想在一个块中将图像划分为8个像素×8像素= 64像素的块,我已经使用之前发布的代码完成了它。我想从每个块中列出RGB(112,231,222)中的像素颜色,并将其转换为亮度以获得像素颜色强度,我这样做 - (.299 *红)+(.587 *绿)+( .114 *蓝),当我从每个块的颜色强度,我想找到最亮的块。但是在我将图像分成块的那一刻,我只能获得块像素坐标,如何获得像素颜色?我希望我的问题对我的英语更加清楚。 – Streem