我有一个具有彩色曲线的图像。
我想为每一行提取曲线较高像素的索引。
此代码有效,但速度很慢(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)