[英]How to resize and image in python while preserving specific grayscale values?
我有一个包含三个灰度值的.png图像。 它包含黑色(0),白色(255)和灰色(128)斑点。 我想将此图像调整为较小的尺寸,同时仅保留这三个灰度值。
当前,我正在使用scipy.misc.imresize
来执行此操作,但是我注意到减小尺寸时,边缘变得模糊,现在包含3个以上的灰度值。
有谁知道如何在python中做到这一点?
从该文档为imresize
,注意interp
关键字参数:
interp : str, optional
Interpolation to use for re-sizing
(‘nearest’, ‘lanczos’, ‘bilinear’, ‘bicubic’ or ‘cubic’).
默认为bilinear
过滤。 切换到nearest
,它将使用最接近的现有像素的确切颜色,这将保留您的精确灰度值,而不是尝试在它们之间进行线性插值。
我相信PIL.Image.resize
确实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
看看它的文档 。
interp
参数正是您所需要的。 如果将其设置为nearest
则图像颜色不会受到影响。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.