python - opencv/ python : mask in module cv2 while streaming webcam video

标签 python opencv webcam mask

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

我正在使用 opencv 的 python 和模块 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)

提前致谢!

最佳答案

如果您使用的是 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 的颜色深度,您可能需要先将其降低为灰度

关于python - opencv/ python : mask in module cv2 while streaming webcam video,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14554946/

相关文章:

jquery - 如何将字符串列表发布到 GAE

python - 重载模块,需要重新编译子模块?

python - Matplotlib 挑战 - 仅在存在范围内绘制的智能方法

c++ - 删除 opencv 和 c++ 中的边界线

OpenCV 网络摄像头帧率

python - ZeroMQ Pub/Sub 操作队列中的最后一个元素和其他元素

python - 使用 OpenCV 合并重叠矩形

java - FMJ 网络摄像头捕获示例

c - Linux 上 C 的网络摄像头库?

java - 在 opencv java 中为来自网络摄像头的视频输入实现背景减法?