gpt4 book ai didi

python - 来自阵列的图像和使用点的图像

转载 作者:行者123 更新时间:2023-11-28 21:57:32 25 4
gpt4 key购买 nike

我正在使用 Image.point 和 Image.fromarray 对图像执行完全相同的操作,将所有像素的值一起增加相同的值。问题是我得到了完全不同的图像。

使用点

def getValue(val):
return math.floor(255*float(val)/100)

def func(i):
return int(i+getValue(50))

out = img.point(func)

使用数组和 numpy

arr = np.array(np.asarray(img).astype('float'))
value = math.floor(255*float(50)/100)
arr[...,0] += value
arr[...,1] += value
arr[...,2] += value

out = Image.fromarray(arr.astype('uint8'), 'RGB')

我正在使用相同的图像(jpg)。

初始图像 initial image

带点的图像 using point

带有数组的图像 using arrays

它们怎么会有这么大的不同?

最佳答案

您的数组中有大于 255 的值,然后将其转换为 uint8 ...您希望这些值在图像中变成什么?如果您希望它们为 255,请先剪辑它们:

out_arr_clip = Image.fromarray(arr.clip(0,255).astype('uint8'), 'RGB')

顺便说一句,没有必要分别添加到每个色带:

arr = np.asarray(img, dtype=float)   # also simplified
value = math.floor(255*float(50)/100)
arr += value # the same as doing this in three separate lines

如果每个波段的不同,您仍然可以这样做,因为broadcasting :

percentages = np.array([25., 50., 75.])
values = np.floor(255*percentages/100)
arr += values # the first will be added to the first channel, etc.

关于python - 来自阵列的图像和使用点的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19728842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com