使用Pillow

时间:2016-03-07 22:50:01

标签: python image-processing pillow

我正在尝试使用Python中的Pillow对图像进行像素化处理。我的程序旨在获取一组像素的平均颜色(在这种情况下为50x50)并将其应用于该组。然而,这仅发生在第一个50x50块,然后图像的其余部分仍然未被混合。这是我的代码:

from PIL import Image

def pixelate(img):
    pixels = img.load()
    colors = []
    current_color = pixels[0,0]
    pix_size = 50

    for i in range(0, img.size[0], pix_size):
        for j in range(0, img.size[1], pix_size):
            red_avg = 0
            green_avg = 0
            blue_avg = 0
            current = pixels[i,j]
            for m in range(pix_size):
                for n in range(pix_size):
                    red_avg += pixels[m,n][0]
                    green_avg += pixels[m,n][1]
                    blue_avg += pixels[m,n][2]
            red_avg = red_avg // (pix_size * pix_size)
            green_avg = green_avg // (pix_size * pix_size)
            blue_avg = blue_avg // (pix_size * pix_size)
            for h in range(pix_size):
                for k in range(pix_size):
                    pixels[h,k] = (red_avg, green_avg, blue_avg)

    return img

img = Image.open('wallaby.jpg')
new = pixelate(img)
new.show()

here's the image I've been using(如果您不想编辑代码,请另存为wallaby.jpg):

我是否在概念上遗漏了某些内容,或者只是在我的代码中犯了一个愚蠢的错误?

我还应该注意,这是作业的一部分,我不是在寻找一个完整的解决方案,也许是我的方法目前无法正常工作的原因。

提前谢谢!

0 个答案:

没有答案