我有一幅彩色曲线图。

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

该代码有效,但是速度很慢(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)]


我怎样才能更快地完成同一件事?

最佳答案

沿每行(即最后一个轴)与magic元素进行比较。这为我们提供了一个2D蒙版。

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


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

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

关于python - 从numpy图像中提取彩色线条,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47240745/

10-12 13:30