有条件地将一幅图像的像素值分配给另一幅图像
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)
我有两张图片(大小相同):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)