17

我正在尝试在 Python 中使用 cv2.createBackgroundSubtractorMOG2 () 方法。我在 Mac 和 Raspberry Pi 上都试过了,运行以下代码行时出现同样的错误:

fgbg = cv2.createBackgroundSubtractorMOG2()

我使用的代码取自https://github.com/abidrahmank/OpenCV2-Python-Tutorials/blob/master/source/py_tutorials/py_video/py_bg_subtraction/py_bg_subtraction.rst

运行此代码时出现以下错误:

fgbg = cv2.createBackgroundSubtractorMOG2() AttributeError: 'module' 对象没有属性 'createBackgroundSubtractorMOG2'

我似乎无法使用任何 createBackgroundSubtractor 方法。

过去一天我一直在尝试解决这个问题,但我在网上搜索时运气不佳,因为 Python 上对 cv2 的支持有限。

提前致谢

4

7 回答 7

32

将 create.... 替换为

fgbg = cv2.BackgroundSubtractorMOG()

于 2013-12-30T21:03:59.677 回答
12

cv2.createbackgroundSubstractor()适用于 cv 3.0 以供 2.4.x 使用cv2.BackgroundSubstractor()

于 2014-06-16T16:44:53.023 回答
5

我在用着

>>> import cv2
>>> cv2.__version__
>>> 3.2.0

和python 2.7.12。当我尝试使用 cv2.createBackgroundSubtractorMOG() 时,我收到了相同的错误消息(也尝试不使用“create ...”)。但是当我发现 cv2.createBackgroundSubtractorKNN() 具有相同的功能时,我感到很惊讶......并且测试代码有效:) 2 天我很困惑,找不到问题所在。

于 2017-03-31T20:15:44.773 回答
4

感谢大家的评论。似乎 createBackgroundSubtractorMOG2() 尚未添加到 OpenCV 2.4,但它存在于 master 分支中,可以从 github 编译。

我发现 cv2.BackgroundSubtractor() 正在满足我目前的需要。

有关详细信息,请参阅http://code.opencv.org/issues/2812#note-5 。

于 2013-09-12T15:54:01.070 回答
2

我正在使用 OpenCV-python 2.4.9 和 Python2.7.8。

在我的环境中,cv2.BackgroundSubtractorMOG 和 cv2.BackgroundSubtractorMOG2 可用。

您可以通过在 python shell 中使用“help(cv2)”来找出可用的属性。

BackgroundSubtractorMOG(...)
    BackgroundSubtractorMOG([history, nmixtures, backgroundRatio[, noiseSigma]]) -> <BackgroundSubtractorMOG object>

BackgroundSubtractorMOG2(...)
    BackgroundSubtractorMOG2([history, varThreshold[, bShadowDetection]]) -> <BackgroundSubtractorMOG2 object>
于 2014-10-19T04:16:58.183 回答
1

根据https://docs.opencv.org/master/db/d5c/tutorial_py_bg_subtraction.html 你应该使用cv.bgsegm.createBackgroundSubtractorMOG()

我在 3.4.0-dev 上对其进行了测试,并且可以正常工作。

示例代码:

import numpy as np
import cv2 as cv
cap = cv.VideoCapture('vtest.avi')
fgbg = cv.bgsegm.createBackgroundSubtractorMOG()
while(1):
    ret, frame = cap.read()
    fgmask = fgbg.apply(frame)
    cv.imshow('frame',fgmask)
    k = cv.waitKey(30) & 0xff
    if k == 27:
        break
cap.release()
cv.destroyAllWindows()
于 2018-01-09T23:24:38.650 回答
1
>>> import cv2
>>> cv2.__version__
>>> 3.2.0
>>>bg_model = cv2.BackgroundSubtractorMOG2(0, 10)
Traceback (most recent call last):
  File "/home/manivannan/pythonexamle/opencv/Samples/hand-gesture-recognition-opencv/HandRecognition.py", line 233, in <module>
    bg_model = cv2.BackgroundSubtractorMOG2(0, 10)
AttributeError: 'module' object has no attribute 'BackgroundSubtractorMOG2'
>>>bg_model = cv2.createBackgroundSubtractorMOG2(0, 10)

使用 createBackgroundSubtractorMOG2 而不是 BackgroundSubtractorMOG2 它正在工作

于 2017-09-04T17:14:58.760 回答