Python 黑色时如何将BGR图像设置为其他图像?
我有2个BGR图像。其中一个大部分是黑色的。我希望所有的黑色像素都设置为另一个图像的像素Python 黑色时如何将BGR图像设置为其他图像?,python,opencv,numpy,Python,Opencv,Numpy,我有2个BGR图像。其中一个大部分是黑色的。我希望所有的黑色像素都设置为另一个图像的像素 u_v[:,:,:] = prev_frame[:,:,:] # Only where u_v[:,:] = black/(0,0,0) 我们可以创建一个黑色像素的遮罩,通过与0进行比较,然后沿着最后一个轴=-1查找所有的零- mask = (u_v==0).all(axis=-1) 然后,使用此用于布尔索引的掩码从上一帧中选择并分配到上一帧中- 示例运行的解释 1] 投入: In [148]: u_
u_v[:,:,:] = prev_frame[:,:,:] # Only where u_v[:,:] = black/(0,0,0)
我们可以创建一个黑色像素的遮罩,通过与0进行比较,然后沿着最后一个轴=-1查找所有的零-
mask = (u_v==0).all(axis=-1)
然后,使用此用于布尔索引的掩码从上一帧中选择并分配到上一帧中-
示例运行的解释
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]]])
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]]])
黑色是指三个通道上的精确零?没错!谢谢你的澄清。我想你可以简单地使用一个面具:m=u_v==0.all-1;u_v[m]=prev_frame[m]。你能再解释一下这意味着什么吗?看起来像胡言乱语
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)
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]]])