例如,我有兩個影像
import numpy as np
img1 = np.array([[[1,1,1],[2,2,2]],[[3,3,3],[4,4,4]]])
img2 = np.array([[[1,1,1],[1,1,1]],[[3,3,3],[1,1,1]]])
我想比較兩者,在像素匹配和不匹配的地方,使用 img1 中的像素,在它們匹配的地方,用黑色像素替換像素
想要的結果:
[[[0,0,0],[2,2,2]],[[0,0,0],[4,4,4]]]
uj5u.com熱心網友回復:
干得好:
img1[img1==img2] = 0
uj5u.com熱心網友回復:
使用.all(-1)onimg1==img2檢查所有通道上的相等性。然后np.where是廣播:
out = np.where((img1==img2).all(axis=-1)[...,None], (0,0,0), img1)
或者,由于您使用 進行屏蔽(0,0,0),您可以使用.any(axis=-1)onimg1!=img2來檢測某個頻道上的差異,然后進行廣播和乘法:
out = (img1!=img2).any(axis=-1)[...,None] * img1
輸出:
array([[[0, 0, 0],
[2, 2, 2]],
[[0, 0, 0],
[4, 4, 4]]])
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/342899.html
