python - 黑色时如何将BGR图像设置为另一个图像?

标签 python opencv numpy

我有 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-indexingprev_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/

相关文章:

python - 映射 - 特征重要性与标签分类

python - Numpy 索引 : Get every second coloumn for each even row

c# - 尝试初始化新图像 <> 时,EmguCV 343 缺少 dll "cvextern.dll"

python - 无法在 Windows 上安装 cv2

python - Numpy:根据条件获取最小值的索引

python - 使用 cv.fromarray 将转置的 NumPy 数组转换为 Python 中的 CvMat 类型

python - 将不同版本的 Python 包的不同版本上传到奶酪店

c++ - 如何从 opencv 2.2 中的文件中读取内在矩阵和畸变矩阵

python - 从pdf生成概率?

python - 在列表中的列表之间找到减法的最大绝对值