4

嘿大家我正在尝试使用我的网络摄像头制作游戏,我需要一些物体从屏幕上掉下来,同时我用我的网络摄像头流式传输视频(那个流是我的背景)。

我正在使用python 和opencv 的模块 cv2

问题是:如何对这些对象应用蒙版?我已经有一个图像作为原始图像的蒙版,但我不知道如何应用它来减去原始图像的背景..

我已经尝试使用 cv2.bitwise_and 但什么也没发生,图像在黑色背景下保持不变:

#targets
original_ball = cv2.imread("Aqua-Ball-Red-icon.png")
ball = cv2.resize(bola_original, (64,64), fx=1, fy=1)
#mask
mask_original = cv2.imread("input-mask.png",0)
mask = cv2.resize(mask_original, (64,64), fx=1, fy=1)
res = cv2.bitwise_and(ball, ball, mask = mask)

提前致谢!

4

2 回答 2

1

如果您正在使用cv2,则您正在使用numpy数组,并且无需求助于 opencv 来获得像掩码这样简单的东西。

首先,操纵(可能乘以)您的掩码数组,使您想要的值(即:那些未屏蔽的值)具有值 1。然后,将您的源图像乘以您的掩码。这将使生成的图像具有掩码 == 1 的原始像素,以及掩码 == 0 的 0(即:黑色)像素。

这是它的要点:

import numpy
original_ball = cv2.imread("Aqua-Ball-Red-icon.png")
ball = cv2.resize(bola_original, (64,64), fx=1, fy=1)
mask_original = cv2.imread("input-mask.png",0)
mask = cv2.resize(mask_original, (64,64), fx=1, fy=1)

max_value= numpy.max(mask)
mask/=max_value
res= ball*mask

根据input-mask.png的颜色深度,您可能需要先将其降低为灰度

于 2013-01-28T03:20:25.923 回答
1

由于掩码图像名称旁边的 0 参数,掩码未出现)。

于 2013-01-28T19:27:07.717 回答