如何在保留特定灰度值的同时在python中调整大小和图像?

时间:2016-10-22 06:39:41

标签: python image image-processing scipy

我有一个包含三个灰度值的.png图像。它包含黑色(0),白色(255)和灰色(128)斑点。我想将此图像调整为较小的尺寸,同时仅保留这三个灰度值。

目前,我正在使用scipy.misc.imresize来做这件事,但我注意到当我缩小尺寸时,边缘变得模糊,现在包含超过3个灰度值。

有没有人知道如何在python中执行此操作?

2 个答案:

答案 0 :(得分:5)

the docs for imresize开始,请注意interp关键字参数:

interp : str, optional
   Interpolation to use for re-sizing
   (‘nearest’, ‘lanczos’, ‘bilinear’, ‘bicubic’ or ‘cubic’).

默认为bilinear过滤;切换到nearest,它将使用最近的现有像素的确切颜色,这将保留您的精确灰度值,而不是尝试在它们之间进行线性插值。

答案 1 :(得分:1)

我相信PIL.Image.resize完全符合您的要求。看看docs

基本上你需要的是:

from PIL import Image
im = Image.open('old.png')
# The Image.NEAREST is the default, I'm just being explicit
im = im.resize((im.size[0]/2, im.size[1]/2), Image.NEAREST)
im.save('new.png')

实际上你可以用scipy.misc.imresize做到这一点 看看它的docs

interp参数是您所需要的。如果将其设置为nearest,图像颜色将不会受到影响。