【发布时间】:2018-05-27 21:37:36
【问题描述】:
我想识别位于两种颜色之间的所有黄色像素,例如 [255, 255, 0] 是亮黄色,而 [200, 200, 50] 是中黄色。
c = color_array = np.array([
[255, 255, 0], # bright yellow
[200, 200, 50]]) # mid yellow
所以 rgb 范围可以表示为:
(min, max) tuple...
r (200, 255)
g (200, 255)
b (0, 50)
我有一个 2D(图像的高度 x 图像的宽度)[r, g, b] 数组:
image = np.random.randint(0, 255, (5, 4, 3))
array([[[169, 152, 65],
[ 46, 123, 39],
[116, 190, 227],
[ 95, 138, 243]],
[[120, 75, 156],
[ 94, 168, 139],
[131, 0, 0],
[233, 43, 28]],
[[195, 65, 198],
[ 33, 161, 231],
[125, 31, 101],
[ 56, 123, 151]],
[[118, 124, 220],
[241, 221, 137],
[ 71, 65, 23],
[ 91, 75, 178]],
[[153, 238, 7],
[ 2, 154, 45],
[144, 33, 94],
[ 52, 188, 4]]])
如果 r,g,b 值在颜色数组中的 2 个颜色值之间的范围内,我想生成一个带有 True 的 2D 数组。
[[T, F, F, T],
[T, F, F, T],
... ]]
我一直在努力获得正确的索引。
【问题讨论】:
-
你能让你的数组说
5x4而不是5x3吗?这样可以更清楚地说明第 3 维是颜色。 -
为什么
color_array是4维的? -
你能清楚地说明在范围内是什么意思吗?是
255 >= r >= 200 and 255 >= g >= 200 and 0 <= g <= 50的意思吗? -
刚刚更改了尺寸,同意这更清楚。所以这将产生一个 5x4 布尔数组,其中颜色匹配如下:如果 r、g、b 颜色为 200
-
@BlueShrapnel。为了清楚起见,您想匹配 所有 条件,而不是 任何 或“至少两个”或类似的奇怪的东西,对吗?