我有一个包含三个灰度值的.png图像。它包含黑色(0),白色(255)和灰色(128)斑点。我想将此图像调整为较小的尺寸,同时仅保留这三个灰度值。
目前,我正在使用scipy.misc.imresize
来做这件事,但我注意到当我缩小尺寸时,边缘变得模糊,现在包含超过3个灰度值。
有没有人知道如何在python中执行此操作?
答案 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
,图像颜色将不会受到影响。