繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM