找不到OpenCV2 Python createBackgroundSubtractor模块

时间:2013-09-10 14:25:18

标签: python opencv background-subtraction

我正在尝试在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的支持有限。

提前致谢

7 个答案:

答案 0 :(得分:31)

替换create ....

fgbg = cv2.BackgroundSubtractorMOG()

答案 1 :(得分:12)

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

答案 2 :(得分:5)

我正在使用

Person p1 = new Person();
p1.Contacts.Add(new Phone() { Number = "555579561" });

和python 2.7.12。当我尝试使用cv2.createBackgroundSubtractorMOG()时,我收到了相同的错误消息(也尝试过没有"创建...")。但是当我发现具有相同功能的cv2.createBackgroundSubtractorKNN()时,我感到很惊讶......并且测试代码可以工作:) 2天我很困惑,无法找到问题所在。

答案 3 :(得分:4)

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

我发现cv2.BackgroundSubtractor()正在为我目前需要的工作。

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

答案 4 :(得分:2)

我使用的是OpenCV-python 2.4.9和Python2.7.8。

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

您可以使用" help(cv2)"找出可用的属性。在你的python shell中。

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

BackgroundSubtractorMOG2(...)
    BackgroundSubtractorMOG2([history, varThreshold[, bShadowDetection]]) -> <BackgroundSubtractorMOG2 object>

答案 5 :(得分: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 它在工作

答案 6 :(得分: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()