Python 使用枕头对图像进行像素化
我正在尝试用Python中的枕头对图像进行像素化。我的程序旨在获取一组像素(本例中为50x50)的平均颜色,并将其应用于该组。然而,这只发生在第一个50x50块上,然后图片的其余部分保持不固定。这是我的密码:Python 使用枕头对图像进行像素化,python,image-processing,pillow,Python,Image Processing,Pillow,我正在尝试用Python中的枕头对图像进行像素化。我的程序旨在获取一组像素(本例中为50x50)的平均颜色,并将其应用于该组。然而,这只发生在第一个50x50块上,然后图片的其余部分保持不固定。这是我的密码: from PIL import Image def pixelate(img): pixels = img.load() colors = [] current_color = pixels[0,0] pix_size = 50 for i in
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()
和(如果不想编辑代码,另存为wallby.jpg):
我是在概念上遗漏了什么,还是只是在代码中犯了一个愚蠢的错误
我还应该注意到,这是作业的一部分,我并不是在寻找一个完整的解决方案,这也许是我的方法目前不起作用的一个原因
提前谢谢你 简单/正常的方法是将图像的大小调整到原始大小的10%,然后使用最近邻插值将其放大到原始大小。看看你的偏移量——你几乎不用i,j,它定义了你的“滑动窗口”。相反,您总是只在左上角工作。你需要相应地调整你的像素访问。@deets我明白你的意思了!这让我意识到我并没有分别用I和j来抵消m,n和h,k变量。非常感谢!