使用Image.resize()时,我遇到了一些奇怪的事情。我有两个图像,一个是另一个的裁剪版本。我一直在计算宽高比,这样我就可以用相同的因子调整两个图像的大小,然后分别调整它们的大小。
现在出于某种原因,两个图像中较大的图像调整得很好,但裁剪版本有一些颜色失真。几乎看起来图像已经略微饱和了。
以前有没有人经历过这个或知道为什么会这样?
感谢阅读。
答案 0 :(得分:1)
我们真的需要看代码。
没有代码,很难确切地知道,但我经常在PIL中看到类似转换引起的颜色问题。一些python图像的东西假设数字将在[0.0 - 1.0]
之间浮动,而其他人认为它们将是[0, 255]
等中的整数。
我建议您使用这些类型转换来查看是否有任何有趣的事情发生:
image = image.astype(uint8)
image = image.astype(float32)
image = uint8(image)
image = float32(image)
答案 1 :(得分:0)
我还没有使用Pillow,而且我还没有看到你的图片或代码,但是让我们说你有一张分辨率为400x200的图像,并且想要将其调整为200x100,那么每个新像素都需要有一些颜色。由于新图像较小,因此必须将原始图像的颜色混合在一起以形成新颜色。因此,在每个维度中它变小两倍的情况下,每个像素的颜色将是原始像素的四个像素的平均值。类似地,如果您调整大图像,取决于如何完成,新像素可能是块状的(如放大到任何像素图像时)或平滑,这意味着它们是来自像素的一些像素插值原始图片。
答案 2 :(得分:0)
Pillow / PIL(以及大多数其他图像库)在进行大小调整/重新采样时可能不是色彩空间或伽玛感知。
以下是Pillow与此问题相关的问题: SRGB-aware image resize in Pillow
的更一般性解释