我正在尝试使用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):
我是否在概念上遗漏了某些内容,或者只是在我的代码中犯了一个愚蠢的错误?
我还应该注意,这是作业的一部分,我不是在寻找一个完整的解决方案,也许是我的方法目前无法正常工作的原因。
提前谢谢!