从numpy图像中提取彩色线条

时间:2017-11-11 17:24:48

标签: python arrays image numpy

我的图像中有一条彩色曲线。

我想为每一行提取曲线较高像素的索引。

此代码有效但速度很慢(f是图片,magic是线条颜色的RGB代码):

res = f.shape[0]
magic = 146, 47, 6
return [min(l for l in range(res) if np.array_equal(magic, f[l, c, :3])) for c in range(res)]

我怎样才能更快地做同样的事情?

1 个答案:

答案 0 :(得分:2)

比较每行的magic元素,即最后一个轴。这给了我们一个2D面具。

mask = (f == magic).all(-1)

因为,我们终于做min(l),这意味着找到该掩码数组中第一个True的索引。因此,如果至少有一个保证匹配,我们可以使用argmax来获取第一个匹配的索引,就像这样 -

(f == magic).all(-1).argmax(0)