python - 背景减法器

标签 python opencv background-subtraction

我在 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 的声誉才能发布。 (我是新来的。)问题是,除了我现在的“图像”之外,程序开始运行时我的初始“图像”仍保留在屏幕上。如何删除它?

谢谢。

最佳答案

我看到您使用了 cap = cv2.VideoCapture(0)。这会从您的相机获取输入。

最新版本的 OpenCV 是 4.3.0。

我使用了 cv2.createBackgroundSubtractorMOG2() 而不是 cv2.BackgroundSubtractorMOG()

代码:

BSGuy = cv2.createBackgroundSubtractorMOG2()

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

关于python - 背景减法器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24130593/

相关文章:

python - OpenCV 无法正确写入输出文件 (Python)

python - Keras 嵌入层 : how do they work?

python - 用于 Windows XP 的 opencv

python - Trac - 注销强制 session 删除

opencv - 在网球比赛视频中检测/跟踪球

c++ - 在 OpenCV 中使用 SURF 测量模式识别的准确性

image-processing - 背景扣除

c++ - opencv=3.1.0 的背景减法器

python - 在保留组的同时,在 Pandas 中的 GroupBy 之后过滤组

python - python 中 C++ vector 的实例(对于 pyROOT 中的 TTrees)