我有两张图片img1
和img2
。我试图在img1
中找到颜色[0,204,204]
的所有位置,并将其替换为同一位置img2
中的任何内容。我可以使用np.where()
找到出现颜色的地方,并直接用不同的颜色替换它:
img1[np.where((img1==[0,204,204]).all(axis=2))] = [255,255,0]
我不确定如何获取这些单元格的索引,因为图像的形状是3个维度的5070000,因此,我无法有效地显示数组。查看numpy文档,我想我可以做类似的事情:
img2[img1[img1==[0,204,204]]]
获取发生该颜色的img1
索引,然后从img2
调用相同的数组位置,但是,我似乎无法正确使用此语法。帮助
答案 0 :(得分:1)
如果我理解正确,您可以使用以下内容:
img1[np.where((img1==[0,204,204]).all(axis=2))] = img2[np.where((img1==[0,204,204]).all(axis=2))]
这是有效的,因为您最初的语法(np.where((img1==[0,204,204]).all(axis=2))
)已经返回了您要查找的索引
示例(在小数组上):
img1 = np.array([[[0,204,204],[0,0,0],[1,2,3]]])
array([[[ 0, 204, 204],
[ 0, 0, 0],
[ 1, 2, 3]]])
img2 = np.array([[[0,1,2],[1,1,1],[2,7,3]]])
array([[[0, 1, 2],
[1, 1, 1],
[2, 7, 3]]])
img1[np.where((img1==[0,204,204]).all(axis=2))] = img2[np.where((img1==[0,204,204]).all(axis=2))]
>>> img1
array([[[0, 1, 2],
[0, 0, 0],
[1, 2, 3]]])