[英]Replace all rgb values above a threshold
我有一個充滿 RGB 值的 numpy 3 d 數組,例如 shape = (height,width,3)
matrix = np.array( [[[0,0.5,0.6],[0.9,1.2,0]])
如果任何值高於閾值,我必須替換 RGB 值,例如閾值 = 0.8,替換 = [2,2,2] 然后
matrix = [[[0,0.5,0.6],[2,2,2]]
我怎樣才能用 numpy 以有效的方式做到這一點? 目前我正在使用雙循環並檢查是否有任何 rgb 值高於閾值,我將其替換,但是對於 n = 4000 數組來說這很慢。
我如何使用 numpy 更有效地做到這一點,也許是 np.where ?
我已經通過另一個width
維度擴展了你的矩陣。
matrix = np.array([[[0,0.5,0.6],[0.9,1.2,0]],[[0,0.5,0.6],[0.9,1.2,0]]])
您可以通過在軸 2 上使用np.any
構建掩碼(從 0 開始,因此是第三軸):
mask = np.any((matrix > 0.8), axis=2)
# mask:
array([[False, True],
[False, True]], dtype=bool)
matrix[mask] = np.array([2,2,2])
你得到的matrix
:
array([[[ 0. , 0.5, 0.6],
[ 2. , 2. , 2. ]],
[[ 0. , 0.5, 0.6],
[ 2. , 2. , 2. ]]])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.