OpenCV Python将掩码替换为背景

2024-06-23 19:54:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从图像中移除遮罩,并用背景色替换它。在这个例子中,我想把克里斯蒂亚诺的脸从原图上去掉

这是原始图像
enter image description here

这就是面具
enter image description here

这就是我现在使用的代码

# load background (could be an image too)
bk = np.full(frame.shape, 255, dtype=np.uint8)  # white bk


# blur the mask to help remove noise, then apply the
# mask to the frame
skinMask = cv2.GaussianBlur(skinMask, (3, 3), 0)



#skinMask = cv2.bitwise_not(skinMask)
skin = cv2.bitwise_and(frame, frame, mask = skinMask)

cv2.imshow("mask", skin)

mask = cv2.bitwise_not(skinMask)
bk_masked = cv2.bitwise_and(bk, bk, mask=mask)

# combine masked foreground and masked background 
final = cv2.bitwise_or(bk_masked,skin)

Tags: andtheto图像npnotmaskcv2
1条回答
网友
1楼 · 发布于 2024-06-23 19:54:15

我不知道你的面具到底是什么形状,但交换操作应该是非常直接的。在

# Assuming frame is of shape (531, 403, 3)
# And skinMask is of shape (527, 401, 3)
# Which is what it is when you do an cv2.imread on your posted images

# First find all the coordinates you want to swap
faceCoords = np.where(skinMask != [0,0,0])  # 0,0,0 is black

# Then swap the values from your bk image like so
frame[faceCoords[0],faceCoords[1],faceCoords[2]] = bk[faceCoords[0],faceCoords[1],faceCoords[2]]

这将生成一个图像,背景值将替换遮罩值的正部分。在

相关问题 更多 >

    热门问题