0
私は2つのBGR画像を持っています。 1つはほとんど黒です。私はすべての黒のピクセルを別の画像のピクセルに設定したい。黒でBGRイメージを別のイメージに設定する方法は?
u_v[:,:,:] = prev_frame[:,:,:] # Only where u_v[:,:] = black/(0,0,0)
私は2つのBGR画像を持っています。 1つはほとんど黒です。私はすべての黒のピクセルを別の画像のピクセルに設定したい。黒でBGRイメージを別のイメージに設定する方法は?
u_v[:,:,:] = prev_frame[:,:,:] # Only where u_v[:,:] = black/(0,0,0)
我々は0
と比較すると、それに沿ってALL
reduceで最後の軸(axis=-1)
に沿っALL
ゼロを探すことによりblack
ピクセルのマスクを作成することができます -
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]]])
黒では正確なゼロを意味します。 3つのチャンネルをすべて通過しますか? – Divakar
これは間違いない!明確化のためにありがとう。 –
私は単純にマスクを使うことができると思います: 'm =(u_v == 0).all(-1); u_v [m] = prev_frame [m] 'です。 – Divakar