gpt4 book ai didi

python - 根据其颜色更改像素颜色

转载 作者:太空宇宙 更新时间:2023-11-03 22:23:04 25 4
gpt4 key购买 nike

很难为这个问题找到一个真正具有描述性的标题,但基本上,我想让浅灰色更白。

现在我正在做类似的事情:

# Separate channels of image (from BGR format)
b, g, r = gray[:, :, 0], gray[:, :, 1], gray[:, :, 2]

# Create a mask for the whitish pixels
mask = (b > 128) & (g > 128) & (r > 128)

# Put thoses pixels as white
gray[:, :, :3][mask] = [255, 255, 255]

但我不希望它们是全白的,而只是更白,所以要考虑到它们的当前值。这是一个示例函数的伪代码:

if (r>128 && g>128 && b>128)
r = r + (255-r)/2
g = ...

我如何在 python 中执行此操作?在此先感谢您的帮助,我希望您已经足够清楚了。

最佳答案

a 作为输入 RGB 图像,可以建议两种矢量化方法。

方法 #1: 创建要修改的地方的掩码,保持尺寸并使用 np.where 在新值和旧值之间进行选择,从而创建一个新的图像数组 -

mask = (a > 128).all(-1,keepdims=True)
new_vals = a + (255 - a)//2
a = np.where(mask, new_vals, a )

方法 #2: 创建要修改的地方的掩码而不保留尺寸,让我们使用 boolean-indexing 进行原位编辑 -

mask = (a > 128).all(-1,keepdims=False)
a_masked = a[mask]
new_vals_masked = a_masked + (255 - a_masked)//2
a[mask] = new_vals_masked

sample 运行-

In [34]: np.random.seed(0)

In [35]: a = np.random.randint(0,255,(2,2,3)).astype(np.uint8)

In [36]: a[0,0] = [200,180,160]

In [37]: a[1,1] = [170,150,220]

In [38]: a # Original image array
Out[38]:
array([[[200, 180, 160],
[192, 67, 251]],

[[195, 103, 9],
[170, 150, 220]]], dtype=uint8)

In [39]: mask = (a > 128).all(-1,keepdims=True)
...: new_vals = a + (255 - a)//2
...: a = np.where(mask, new_vals, a )
...:

In [40]: a # New array
Out[40]:
array([[[227, 217, 207],
[192, 67, 251]],

[[195, 103, 9],
[212, 202, 237]]], dtype=uint8)

关于python - 根据其颜色更改像素颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46667780/

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