我有两个图像(大小相同):A和B
A是遮罩,它包含零值区域和其他具有RGB值的区域。
B是RGB图像,我想将其某些像素的值更改为其对应的A的像素(具有相同位置且不为零的像素)。
我认为应该是这样的:
如果A(i,j)<> 0,则B(i,j)= A(i,j)
除了我不知道如何用python写... 有人可以帮忙吗?
答案 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)