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

Conditionnally assign pixel values of one image to another

我有两张图片(大小相同):A 和 B

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

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

我想应该是这样的:

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

除了我不知道怎么写python... 有人可以帮忙吗?

如果你用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]

或者更好,正如@Dan Mašek 在评论中指出的那样

import numpy as np

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

请注意,在 numpy 数组中,高度在形状上排在第一位。 Opencv 将图像加载到 numpy 数组中。

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

cv2.bitwise_and(src, src, mask=mask)