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