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

uyhoqukh  于 2023-01-13  发布在  Python
关注(0)|答案(2)|浏览(128)

我有一个.png图像,包含三个灰度值。它包含黑色(0)、白色(255)和灰色(128)斑点。我想将此图像调整为较小的大小,同时只保留这三个灰度值。
目前,我正在使用scipy.misc.imresize来做这件事,但我注意到,当我减少大小,边缘变得模糊,现在包含超过3个灰度值。
有谁知道如何在python中做到这一点吗?

ma8fv8wu

ma8fv8wu1#

the docs for imresize中,注意interp关键字参数:

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

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

q3qa4bjr

q3qa4bjr2#

我相信PIL.Image.resize正是你想要的。看看文档。
基本上你需要的是:

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来做这件事,看看它的文档。
interp参数是你所需要的。如果你把它设置为nearest,图像颜色不会受到影响。

相关问题