使图像向白色褪色

Fading Images towards the color white

我想拍摄原始图像并将其淡化为白色。我应该能够使用变量控制图像的褪色量。我怎样才能做到这一点?

示例:

原图:

褪色图像:

您可以假设示例中的褪色图像向白色褪色 75%

我尝试过的: 基于 上的 Mark Meyer 解决方案,我尝试将我的图像转换为 NumPy 数组并尝试更改每个像素的值(淡化每个像素)。然而,并不顺利。

这是我得到的输出图像:

代码:

import numpy as np
from PIL import Image
from matplotlib.image import imread

# Converting image to numpy array
data = imread("image.png")

# numpy array of white pixel
white = np.array([255, 255, 255])
vector = white-data

# percentage of 0.0 will return the same color and 1.0 will return white
percent = 0.5

# fading image
value = data + vector * percent

# saving faded image
img = Image.fromarray(value, 'RGB')
img.save('my.png')

你没有注意你的 dtype。你在哪里:

white = np.array([255, 255, 255])

您正在创建 int64 类型的数组。你在哪里:

value = data + vector * percent

您正在创建 float 的数组。

您还没有明显的充分理由将 matplotlib.image.imread()PIL.Image.save() 混合使用 - 您会把自己弄糊涂的!坚持一个或另一个。这是您的代码的工作版本:

import numpy as np
from PIL import Image

# Converting image to numpy array
data = Image.open("wall.jpg")

white = np.array([255, 255, 255], np.uint8)
vector = white-data

percent = 0.5
value = data + vector * percent

img = Image.fromarray(value.astype(np.uint8), 'RGB')
img.save('result.png')