我有 2 个 BGR 图像。一个主要是黑色。我希望将所有黑色像素设置为另一个图像的像素。
u_v[:,:,:] = prev_frame[:,:,:] # Only where u_v[:,:] = black/(0,0,0)
最佳答案
我们可以创建 black
的掩码像素通过寻找 ALL
沿最后一个轴的零点 (axis=-1)
通过与 0
进行比较然后 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] bool 索引选择和分配:
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]]])
关于python - 黑色时如何将BGR图像设置为另一个图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46747196/