Python 黑色时如何将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_

我有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_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]]])