Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用枕头对图像进行像素化_Python_Image Processing_Pillow - Fatal编程技术网

Python 使用枕头对图像进行像素化

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

我正在尝试用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 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变量。非常感谢!