将图像分成4x4块并将每个坐标保存在变量中

时间:2018-01-07 15:43:09

标签: python image python-2.7 image-processing cv2

我有一个128x128的灰度图像,我想分成4x4像素非重叠块,我想将每个像素的坐标保存为变量,如下所示 -

pixel1=x,y
pixel2=x,y
pixel3=x,y
pixel4=x,y..and so on to
......
......
......
pixel16384=x,y

我知道我可以通过定义变量手动完成,但我可以使用任何for循环来加快速度吗? 在那之后,我将通过 -

找到每个街区的平均值
Average_of_block1=pixel1.mean(),pixel2.mean(),pixel3.mean(),pixel4.mean()....pixel16.mean()

有任何帮助吗?建议?

1 个答案:

答案 0 :(得分:0)

要获取像素的值,您可以使用PIL和 你可以使用for循环并附加x和y坐标的元组,如下所示:

from PIL import Image
pixels = []
i = Image.open("image.jpg")
p = i.load()
for x in range(128):
    for y in range(128):
        pixels.append(p[x,y]) #gets the RGB value

这适用于那些可以添加额外循环的块的整个图像

from PIL import Image
pixels = []
i = Image.open("image.jpg")
p = i.load()
for b in range(4):
    block = []
    for x in range(32):
        for y in range(32):
            block.append(p[x,y])
    #do something with pixels from block

修改 如果你想使用灰度图像,你应该这样做:

from PIL import Image
pixels = []
i = Image.open("image.jpg").convert("LA") 
p = i.load()
for b in range(4):
    block = []
    for x in range(32):
        for y in range(32):
            block.append(p[x,y][0])
    #do something with the pixels from the block

元组中的第一个int是灰度0(黑色)到255(白色),第二个int是alpha,但我的猜测是你不会在灰度图像中使用alpha