OpenCV 用掩模图像去除背景

Des*_*ner 8 python opencv objective-c

给定两个输入 i。原始图像 & ii. 蒙版图像,从原始图像中删除背景的最佳方法是什么。

原始图像

在此输入图像描述

遮罩图像

在此输入图像描述

最终的输出将只包含没有背景的狗并且看起来是透明的。我看到掩模图像也是用 OpenCV 创建的。有没有办法只使用现有的掩模图像并生成输出图像?

更新 我尝试过这个

import cv2

# opencv loads the image in BGR, convert it to RGB
img = cv2.imread("originalImage.png")
mask = cv2.imread("maskImage.png")
final = cv2.bitwise_and(img, mask)
cv2.imwrite("final.png", final)
Run Code Online (Sandbox Code Playgroud)

最终图像

在此输入图像描述

有没有办法把背景设置成透明?

Bar*_*raa 7

您可以通过创建 4 通道 BGRA 图像并从原始图像复制前 3 个通道并使用遮罩图像设置 Alpha 通道来创建透明图像。

transparent = np.zeros((img.shape[0], img.shape[1], 4), dtype=np.uint8)
transparent[:,:,0:3] = img
transparent[:, :, 3] = mask
Run Code Online (Sandbox Code Playgroud)