# 第24课-像素世界 from PIL import Image from collections import Counter img = Image.open("shield.jpg") s = 10 w = img.size[0] h = img.size[1] img_a = Image.new("RGB",img.size) for y in range(0,h,s): for x in range(0,w,s): block = img.crop((x, y, x+s, y+s)) pi_t = list(block.getdata()) mo_r = Counter(pi_t).most_common(1)[0][0] block_n = img.crop("RGB",block.size,mo_r) img_a.paste(block_n,(x,y)) img_a.show()
时间: 2024-03-30 17:34:29 浏览: 44
PIL.Image.open和cv2.imread的比较与相互转换的方法
5星 · 资源好评率100%
你的代码是用 Python 中的 PIL 库来实现像素化处理的。具体来说,它将一张图片分成若干个小块,每个小块的大小为 $s \times s$,然后针对每个小块,统计其中像素值出现次数最多的颜色,并将整个小块的颜色替换成这个颜色,最后将所有小块拼接起来组成一张新的图片并显示出来。
这样的处理方法可以使得图像变得更加抽象,也能够减少图像的细节,从而达到一些特定的效果。同时,由于代码中使用了 Python 中的 Counter 对象,因此可以快速地统计像素值出现的次数,从而提高代码的效率。
阅读全文