慕桂英4014372
2022-12-20 12:28:44
我得到了一個 rgb 圖像(h 和 w 不是常數),我想將特定范圍(rgb 范圍)內的所有像素都涂成綠色。我得到了大部分代碼的工作,我掙扎的事情:假設我得到以下圖像:arr = np.zeros((4,4,3))arr[0,0] = [2,3,4]arr[1, 1] = [1, 2, 3]讓我們假設條件是滿足以下規則的所有像素:t = np.all((arr >= [1,2,3])&(arr <= [1,4,4]),axis = 2)print(t)[[False False False False][False True False False][False False False False][False False False False]]t 中的每個值代表 arr 中的一個像素,如果它是真的,我想將 arr 中的相應像素更改為 [10,10,10]。意思是我希望輸出是:[[[2. 3. 4.] [0. 0. 0.] [0. 0. 0.] [0. 0. 0.]] [[0. 0. 0.] [10. 10. 10.] [0. 0. 0.] [0. 0. 0.]] [[0. 0. 0.] [0. 0. 0.] [0. 0. 0.] [0. 0. 0.]] [[0. 0. 0.] [0. 0. 0.] [0. 0. 0.] [0. 0. 0.]]]我要求一種麻木的方式來做到這一點。
1 回答

蝴蝶刀刀
TA貢獻1801條經驗 獲得超8個贊
IIUC 你想做的事:
arr[t] = [10,10,10]
例子:
>>> arr = np.zeros((4,4,3))
>>> arr[0,0] = [2,3,4]
>>> arr[1,1] = [1,2,3]
>>> t = np.all((arr >= [1,2,3])&(arr <= [1,4,4]),axis = 2)
>>> arr[t] = [10,10,10]
>>> arr
array([[[ 2., 3., 4.],
[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]],
[[ 0., 0., 0.],
[10., 10., 10.],
[ 0., 0., 0.],
[ 0., 0., 0.]],
[[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]],
[[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]]])
添加回答
舉報
0/150
提交
取消