gpt4 book ai didi

python - 切片以更改 numpy.array 图像上的像素颜色

转载 作者:行者123 更新时间:2023-11-28 21:42:54 26 4
gpt4 key购买 nike

在上一个问题中,我问过如何使用 opencv(BGR 格式)更改上传到 numpy.array 的图像的颜色。目标是将任何红色 channel 值 < 255 转换为 255。

How to optimize changing the value of 3d numpy.array if meet a condition

最佳答案是:

img[img[:, :, 2] < 255] = 255

关键是我不明白发生了什么(这是一个不同的问题,因为上一个问题得到了完美的回答)。我理解这部分:

img[:, :, 2] < 255

正在切割红色 channel 上的 y、x 像素并与 255 值进行比较。

但是,我不明白为什么它被嵌入到另一个数组中:

img[...] = 255 

必须这样读:if (img[:, :, 2] < 255) then make this pixel-red channel=255 但我不知道如何读使它听起来像那样的代码行。

任何人都可以非常清楚地向我解释这行代码,以便我可以为其他目的进行修改吗?边写边读怎么办?

最佳答案

这称为逻辑索引


让我们把它分成两部分:

c=img[:, :, 2] < 255 # construct a boolean array

c 等于 1 的所有索引都用于索引 img 的元素。

img[c, 2] = 255 # set img to 255 at indices in c equal to 1


例如,假设您有这个数组 A=[10, 20, 34, 90, 100] 并且您想要更改 A 中的所有元素大于 11 比 2。

要用逻辑索引来做到这一点,你首先要像这样构造一个 bool 数组:

b=A>11 # [0, 1, 1, 1, 1]

然后,使用b索引A

的元素
A[b]=2

结果数组如下所示:

[10, 2, 2, 2, 2]

关于python - 切片以更改 numpy.array 图像上的像素颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43053107/

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