我已经存储在numpy的阵列的图像,通过与得到imread()
>>> ndim
array([[[ 0, 0, 0],
[ 4, 0, 0],
[ 8, 0, 0],
...,
[247, 0, 28],
[251, 0, 28],
[255, 0, 28]],
[[ 0, 255, 227],
[ 4, 255, 227],
[ 8, 255, 227],
...,
[247, 255, 255],
[251, 255, 255],
[255, 255, 255]]], dtype=uint8)
>>> ndim.shape
(512, 512, 3)
我想高效地找到(X,Y)与特定的颜色值,例如像素的坐标(或坐标)
>>> c
array([ 32, 32, 109], dtype=uint8)
>>> ndim[200,200]
array([ 32, 32, 109], dtype=uint8)
>>> ndim.T[0, 200, 200]
32
>>> ndim.T[1, 200, 200]
32
>>> ndim.T[2, 200, 200]
109
...在这种情况下,我知道在(200,200)的像素具有RGB值(32,32,109) - I可以测试此。
我想要做的就是查询ndarray的像素值,并取回坐标。 在上述情况下,推定的功能find_pixel(c)
将返回(200,200)。
理论上讲,该find_pixel()
函数将返回坐标元组,而不仅仅是找到的第一个值的列表。
我已经看了numpy的的“神奇索引”,这让我感到困惑大大...我的大多数尝试在搞清楚了这一点已经过度紧张和不必要的巴洛克风格。
我相信有我在这里可以俯瞰一个非常简单的方法。 什么是做到这一点的最好办法 - 有一个完全更好的机制来获取这些值比我所概括?