使图像向白色褪色
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')
我想拍摄原始图像并将其淡化为白色。我应该能够使用变量控制图像的褪色量。我怎样才能做到这一点?
示例:
原图:
褪色图像:
您可以假设示例中的褪色图像向白色褪色 75%
我尝试过的:
基于
这是我得到的输出图像:
代码:
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')