【问题标题】:Background Subtractor背景减法器
【发布时间】:2014-06-09 23:25:14
【问题描述】:

我在 Python 2.7 上使用 OpenCV 2.4.9。我正在尝试使用 OpenCV 的背景减法。它应该以某种方式从视频输入中确定前景中的对象以及背景中的其他对象(?)。但是,生成的输出看起来好像只是从后续帧中减去了第一帧。代码如下:

import numpy as np
import cv2

cap = cv2.VideoCapture(0)

BSGuy = cv2.BackgroundSubtractorMOG()


while(1):

    ret, frame = cap.read()
    fgmask = BSGuy.apply(frame)

    cv2.imshow('Frame', fgmask)

    k = cv2.waitKey(30) & 0xff
    if k == 27:
        break

cap.release()
cv2.destroyAllWindows()

我想上传一张图片来澄清一下,但我知道我需要声望 10 才能发帖。 (我是新来的。)问题是除了我现在的“图像”之外,程序开始运行时我的初始“图像”仍然保留在屏幕上。如何删除它?

谢谢。

【问题讨论】:

  • 首先,背景减法没什么神奇的,算法计算背景模型(从第一帧开始)并更新该模型。因此,例如,如果您的相机正在移动,则标准背景减法将不起作用。

标签: python opencv background-subtraction


【解决方案1】:

我看到你使用了cap = cv2.VideoCapture(0)。这需要您的相机输入。

OpenCV 的最新版本是 4.3.0。

我用cv2.createBackgroundSubtractorMOG2()代替cv2.BackgroundSubtractorMOG()

代码:

BSGuy = cv2.createBackgroundSubtractorMOG2()

背景减法器在这个过程中工作得很好。正如你提到的,屏幕上没有额外的初始“图像”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多