0
我有2個BGR圖像。一個大多是黑色的。我想要將所有黑色像素設置爲其他圖像的像素。如何在黑色時將BGR圖像設置爲其他圖像?
u_v[:,:,:] = prev_frame[:,:,:] # Only where u_v[:,:] = black/(0,0,0)
我有2個BGR圖像。一個大多是黑色的。我想要將所有黑色像素設置爲其他圖像的像素。如何在黑色時將BGR圖像設置爲其他圖像?
u_v[:,:,:] = prev_frame[:,:,:] # Only where u_v[:,:] = black/(0,0,0)
我們可以通過對0
比較尋找沿最後軸(axis=-1)
ALL
零創建black
像素的面具,然後ALL
reduce沿着它 -
mask = (u_v==0).all(axis=-1)
然後,用這個面具boolean-indexing
到請從prev_frame
中選擇並指定爲u_v
-
u_v[mask] = prev_frame[mask]
說明與樣品運行
1]輸入:
In [148]: u_v
Out[148]:
array([[[0, 0, 0], # first pixel set as all zeros for testing
[2, 1, 1]],
[[1, 2, 2],
[0, 3, 1]]])
In [149]: prev_frame
Out[149]:
array([[[0, 2, 1], <== this one is to be copied over to u_v
[3, 1, 0]],
[[2, 2, 3],
[2, 0, 1]]])
2]的黑色像素的面膜:
In [150]: mask = (u_v==0).all(axis=-1)
In [151]: mask
Out[151]:
array([[ True, False], # first element is True as first pix was black
[False, False]], dtype=bool)
3]布爾索引來選擇和分配:
In [152]: u_v[mask] = prev_frame[mask]
In [153]: u_v
Out[153]:
array([[[0, 2, 1], <=== copied from prev_frame
[2, 1, 1]],
[[1, 2, 2],
[0, 3, 1]]])
黑色表示確切的零跨越所有三個頻道? – Divakar
這是正確的!感謝澄清。 –
我想你可以簡單地使用一個掩碼:'m =(u_v == 0).all(-1); u_v [m] = prev_frame [m]'。 – Divakar