有条件地将一幅图像的像素值分配给另一幅图像

时间:2018-09-23 14:18:56

标签: python numpy opencv pixel assign

我有两个图像(大小相同):A和B

A是遮罩,它包含零值区域和其他具有RGB值的区域。

B是RGB图像,我想将其某些像素的值更改为其对应的A的像素(具有相同位置且不为零的像素)。

我认为应该是这样的:

如果A(i,j)<> 0,则B(i,j)= A(i,j)

除了我不知道如何用python写... 有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

如果您使用opencv阅读图像:

h = b.shape[0]
w = b.shape[1]
for y in range(0, h):
        for x in range(0, w):
            if a[y,x] > 0:
                b[y,x] = a[y,x]

或者更好,如评论中的@DanMašek所述

import numpy as np

def apply_mask(img, mask):
    img = np.where(mask > 0, mask, img)
    return img

请注意,在numpy数组中,高度优先出现。 Opencv将图像加载到numpy阵列中。

答案 1 :(得分:1)

要为mask应用src,可以使用cv2.bitwise_and

cv2.bitwise_and(src, src, mask=mask)
相关问题