我试图在numpy图像数组中获取给定值的x和y坐标。
我可以通过使用for语句手动运行行和列来实现,但这似乎相当慢,我可能有更好的方法来执行此操作。
我试图修改我在这篇文章中找到的解决方案。 Finding the (x,y) indexes of specific (R,G,B) color values from images stored in NumPy ndarrays
a = image
c = intensity_value
y_locs = np.where(np.all(a == c, axis=0))
x_locs = np.where(np.all(a == c, axis=1))
return np.int64(x_locs), np.int64(y_locs)
我有np.int64将值转换回int64。
答案 0 :(得分:1)
我不太明白这个问题。 all()
中的轴参数在颜色通道(轴2
或-1
)上运行,而不是x
和y
索引。然后where()
将为您提供图像中匹配值的坐标:
>>> # set up data
>>> image = np.zeros((5, 4, 3), dtype=np.int)
>>> image[2, 1, :] = [7, 6, 5]
>>> # find indices
>>> np.where(np.all(image == [7, 6, 5], axis=-1))
(array([2]), array([1]))
>>>
这只是重复你链接的答案。但评论有点太长了。也许你可以解释为什么你需要修改以前的答案?它似乎并不像你需要的那样。