我想找到一种方法来检查我的图像是否具有任何特定的RGB值。
我有一个列表
rgb = [128,134,45]
和图片
img = array([[[0,0,0],[128,134,45],[128,134,45],...,[0,0,0],[0,0,0],[0,0,0]]])
形状=(64,64,3)
并想要获取rgb与img [j] [i]匹配的位置(i,j),例如pos = [(0,1),(0,2),...]
我尝试使用if rgb in img: brbr
之类的“ in”,但没有用。
答案 0 :(得分:3)
>>>np.where((img==rgb).all(axis=2))
(array([0, 0], dtype=int32), array([1, 2], dtype=int32))
这为您提供了rgb值的索引
img[0][1]
和
img[0][2]
答案 1 :(得分:2)
类似于@Bendik的答案,但是此额外步骤为您提供了所有匹配的位置的数组:
np.rot90(np.array(np.where((img==rgb).all(axis=2))))
例如:
img = np.zeros((64,64,3))
rgb = [128,134,45]
img[1,2] = rgb
img[23,32] = rgb
# These are the values we want to find - (1,2) and (23,32)
result = np.rot90(np.array(np.where((img==rgb).all(axis=2))))
print(result)
#OUTPUT:
array([[23, 32],
[ 1, 2]], dtype=int64)